2016-12-29 147 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

非常感謝他指出這個錯誤。

相關問題