2013-05-11 43 views
-3

我試圖使用鍵 - 值編碼數據分配到一個小的模型類的一個實例:respondsToSelector:返回選擇,但setValue方法真:forKey:失敗,則由於未定義的關鍵

SEL selectorName = NSSelectorFromString(elementName); 
if ([self.fixtureItem respondsToSelector:selectorName]) 
{ 
    [self.fixtureItem setValue:self.currentElementData forKey:elementName]; 
} 

elementName是 '說明',respondsToSelector:返回true但setValue:forKey:然後引發NSUnknownKeyException

終止應用程序由於未捕獲的異常 'NSUnknownKeyException', 原因:「[setValue方法:forUndefinedKey:]:這個 CLAS s不是關鍵描述符合編碼的關鍵值。「

爲什麼respondsToSelector:返回true,但setValue:forKey:然後報告關鍵字'description'實際上是未定義的?

+0

什麼是fixtureItem的類型? – giorashc 2013-05-11 11:40:55

+1

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intfm/NSObject/description – 2013-05-11 11:41:14

+0

fixtureItem是一個實例一個簡單的模型類:@interface FixtureItem:NSObject的{} – 2013-05-11 11:42:32

回答

3

因爲您的對象確實對選擇器@selector(description)做出了響應,但不響應@selector(setDescription:),這是setValue:forKey:最終會調用的內容。

+0

謝謝,現在已經很清楚了。 – 2013-05-11 12:02:08

2

儘管您的對象確實對選擇器description做出響應(因爲所有NSObject衍生對象都這樣做),但描述不是可設置。您傳遞的選擇是對的getter description,而不是一個setter setDescription:

相關問題