2016-12-29 144 views
0

我正在尝试Realm(使用pod安装)。我在Xcode 8.1中使用Swift 3。为什么我通过KVC获得价值,但是在使用领域时不能使用属性?

我的代码看起来像这个 -

do { 
     let realm = try Realm() 
     let human = Human() 
     human.name = "Nikhil" 
     human.legs = 2 

     try realm.write { 
      realm.add(human) 
     } 

     let humans = realm.objects(Human.self) 
     for h in humans { 
      print("\(h.name)") //Here is breakpoint 
     } 
    } catch { 
     // 
    } 

然后我做

(lldb) po h.name 
"" 


(lldb) po h.value(forKey: "name")! 
Nikhil 

为什么性能没有返回值,但我可以通过value(forKey:检索值?

+0

LLDB应该能够直接在Realm模型上“po”属性;至少它对Xcode 8.2和我使用CocoaPods安装的Realm都有效。你可以尝试清除你的派生数据并清理你的构建文件夹(选项键+产品菜单,然后“清洁生成文件夹...”)?也许有某种缓存的数据会导致调试器无法正常工作。 – AustinZ

+1

这可能是因为模型的属性没有用'dynamic'声明。没有'dynamic'属性,Swift属性访问将是静态分派。由于Realm懒洋洋地加载所有的值,它需要动态调度。请参阅我们的模型定义备忘单https://realm.io/docs/swift/latest/#cheatsheet –

+0

@kishikawakatsumi你是对的。谢谢 :) –

回答

0

如上所述通过@kishikawa克己 -

类属性应该被定义为dynamic

非常感谢他指出这个错误。

相关问题