Swift 4静态获取模型属性名称

时间:2017-09-21 16:13:38

标签: swift swift4

使用Swift 3时,我正在定义我的模型

class Model: NSObject {
    var prop1: String
} 

当我想访问属性名称prop1的静态字符串值时,我会使用let sad = #keyPath(Model.prop1),它会给我" prop1"打印出来。快乐的日子。

问题是,自从升级到Swift 4后,我无法完成上述操作。我在其他帖子中看到我们可以使用新的\Model.prop1语法,但这似乎提供了属性的值而不是名称的字符串表示。

我也在我的Swift模型上重构了对NSObject的需求,但我原本以为我仍然能够获得这个功能。

任何帮助都将不胜感激!

1 个答案:

答案 0 :(得分:3)

Swift属性不一定在运行时保留属性名称的字符串。因此,如果Swift键路径语法能够为您提供此字符串值,则它只能在NSObject派生类上使用。但是,Swift键路径语法不仅适用于那些语法;它也可以用于引用非@objc类和结构的属性。因此,这是不可能的。但是,#keyPath语法仍然可用于获取Objective-C属性的字符串键路径。