2012-11-28 91 views
0

我正在製作一個iPhone應用程序,從Web服務獲取數據並將其存儲在覈心數據中。所有這些屬性都有在字典中標識它們的鍵。我有一個NSObject類的所有屬性。關鍵價值財產幫助IOS

我現在決定添加一個不是從一個叫做checkMark的Web服務獲得的屬性。我也將其添加到此方法。問題是每當我嘗試使用像這樣的方法設置checkMark屬性時:[s setValue:[NSNumber numberWithInt:check] forKey:@"checked"];smanagedObject我收到一個錯誤,說"the entity Course is not key value coding-compliant for the key "checked"。我該如何解決?

- (id)initWithDictionary:(NSDictionary *)dictionary 
{ 
    self = [super init]; 
    if (self) { 
     // Set the property values 
     _iD = [[dictionary valueForKey:@"Id"] intValue]; 
     _isCurrent = [[dictionary valueForKey:@"IsCurrent"] boolValue]; 
     _checkMark = [[dictionary valueForKey:@"checked"] intValue]; 
    } 
} 
+0

複選標記屬性的類型是什麼 –

+0

什麼是's'?它是字典還是別的? –

+0

這意味着在字典中沒有任何鍵被稱爲「已檢查」 – rakeshNS

回答

0

您需要爲「已檢查」鍵爲密碼編碼實體課程鍵值。

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueCoding/Articles/Compliant.html

基本上,這意味着它必須有一個設置器setChecked:和吸氣劑checked。通常情況下,擁有一個包含該setter和getter的綜合的屬性。

順便說一句,事實上日誌消息都在談論一個實體課程建議,我認爲你在呼喚dictionary和鑄造作爲一個NSDictionary的東西實際上可能不是一個字典,但可能是別的東西,即一個NSManagedObject。只是一個猜測......你可能會做一些記錄/突破,看看這裏發生了什麼。

+0

是否有任何方法來設置屬性而不使用密鑰。我可以做一些像[s setValue:[NSNumber numberWithInt:check]而不使用密鑰? – Joe24