使用Swift 3时,我正在定义我的模型
class Model: NSObject {
var prop1: String
}
当我想访问属性名称prop1的静态字符串值时,我会使用let sad = #keyPath(Model.prop1)
,它会给我" prop1"打印出来。快乐的日子。
问题是,自从升级到Swift 4后,我无法完成上述操作。我在其他帖子中看到我们可以使用新的\Model.prop1
语法,但这似乎提供了属性的值而不是名称的字符串表示。
我也在我的Swift模型上重构了对NSObject的需求,但我原本以为我仍然能够获得这个功能。
任何帮助都将不胜感激!
答案 0 :(得分:3)
Swift属性不一定在运行时保留属性名称的字符串。因此,如果Swift键路径语法能够为您提供此字符串值,则它只能在NSObject
派生类上使用。但是,Swift键路径语法不仅适用于那些语法;它也可以用于引用非@objc
类和结构的属性。因此,这是不可能的。但是,#keyPath
语法仍然可用于获取Objective-C属性的字符串键路径。