#keyPath而不是直接将键作为字符串传递的用途是什么?

时间:2019-05-14 19:12:34

标签: swift directive kvc

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

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

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

在第二种格式中,#keyPath使我感到困惑。到底是什么,我在哪里可以了解到更多信息?

1 个答案:

答案 0 :(得分:2)

两者之间没有区别

key:"dateCreated"

key: #keyPath(Note.dateCreated)

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

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

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