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

标签 swift swift4

使用 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/

相关文章:

arrays - 使用 Swift 的 POST 请求中的数组

ios - 后台任务中的 BGAppRefreshTask

ios - 如何删除父 View 的模糊 View 而不是 subview ?

ios - firebase/swift 4 - 等到 firebase 完成配置

swift - 我可以为具有默认参数的函数输入别名吗?

ios - Swift 从 Firebase 数据库中获取特定值

swift - Xcode 11 beta 5 中止陷阱 : 6 error when calling sink on @Published variable

swift - 如何使用 swift 调用 size_t os_proc_available_memory(void)

swift - Firestore 批处理设置仅插入最后一项

macos - Swift 4 NSTreeController @objc 动态 var 节点 = [Node]() 在启动时导致应用程序崩溃