使用 Swift 3 时,我像这样定义我的模型
class Model: NSObject {
var prop1: String
}
当我想访问属性名称 prop1 的静态字符串值时,我会使用 let Sad = #keyPath(Model.prop1)
,它会给我打印出“prop1”。快乐的日子。
问题是,自从升级到 Swift 4 以来,我在执行上述操作时遇到了困难。我在其他帖子中看到我们可以使用新的 \Model.prop1
语法,但这似乎提供属性的值而不是名称的字符串表示形式。
我还在我的 Swift 模型上重构了对 NSObject 的需求,但我本以为我仍然可以获得此功能。
如有任何帮助,我们将不胜感激!
最佳答案
Swift 属性不一定在运行时保留属性名称的字符串。因此,如果 Swift 键路径语法能够为您提供此字符串值,则它只能在 NSObject
派生类上使用。不过,Swift 键路径语法不仅仅适用于这些;它还可用于引用非 @objc
类和结构的属性。因此,这是不可能的。不过,#keyPath
语法仍然可用,用于获取 Objective-C 属性的字符串键路径。
关于Swift 4 静态获取模型属性名称的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46348669/