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:
检索值?
LLDB应该能够直接在Realm模型上“po”属性;至少它对Xcode 8.2和我使用CocoaPods安装的Realm都有效。你可以尝试清除你的派生数据并清理你的构建文件夹(选项键+产品菜单,然后“清洁生成文件夹...”)?也许有某种缓存的数据会导致调试器无法正常工作。 – AustinZ
这可能是因为模型的属性没有用'dynamic'声明。没有'dynamic'属性,Swift属性访问将是静态分派。由于Realm懒洋洋地加载所有的值,它需要动态调度。请参阅我们的模型定义备忘单https://realm.io/docs/swift/latest/#cheatsheet –
@kishikawakatsumi你是对的。谢谢 :) –