#keyPath 而不是直接将密钥作为字符串传递有什么用?



这两种格式之间的有用区别是什么:

request.sortDescriptors = [NSSortDescriptor(key:"dateCreated", ascending: false)]

request.sortDescriptors = [NSSortDescriptor(key: #keyPath(Note.dateCreated), ascending: false)]

在第二种格式中 #keyPath 让我感到困惑。它到底是什么,在哪里可以阅读更多关于它的信息?

两者之间没有区别

key:"dateCreated"

key: #keyPath(Note.dateCreated)

两者都将使用对象的dateCreated属性进行排序Note后者的优点是避免了硬编码问题,例如编写datCreated而不是dateCreated会抛出编译时错误,因此可以安全地避免在相同情况下前者肯定会发生的运行时崩溃

https://www.klundberg.com/blog/swift-4-keypaths-and-you/

http://chris.eidhof.nl/post/sort-descriptors-in-swift/

最新更新