我在寫一個使用核心數據的應用程序,它很大程度上依賴於設置字符串值的屬性。但是,我遇到了一個問題,因爲Core Data在創建包裝方法時使用NSNumber來表示所有數字字段。因此,如果我使用鍵/值編碼傳遞字符串setValue:forKey:它給我一個類型錯誤:iOS中的鍵值類型強制
例如,我有一個對象類型「建築」。在數據模型中,我稱之爲 「fbFloors」 設置爲整數32.
然後一個屬性,在我的代碼,我做到以下幾點:
大廈* B = [NSEntityDescription insertNewObjectForEntityForName:@ 「大廈」 inManagedObjectContext: CTX]; [b setValue:@「2」forKey:@「fbFloors」];
這就提出了以下情況例外:
終止應用程序由於未捕獲的異常「NSInvalidArgumentException」,原因:「不可接受的類型爲屬性值:屬性=‘fbFloors’;期望的類型= NSNumber;給定類型= __NSCFConstantString;值= 2。「
我希望它強制字符串值爲一個數字,但它不想。我嘗試過實施coerceValueForFbFloors:但它看起來像只適用於Mac OS X,而不是iOS。
任何想法?
我希望避免這個原因是因爲我希望能夠避免直接編碼它。有很多不同類型的字段,但都是通過文本提要進入的,所以我希望KVC能夠強制類型,而不必手動編寫每個字段發生的情況。我曾想過添加一個名爲「fbFloorsString」的字段,它爲我做了轉換,但我希望能有一種更自動的方式。 – johnnyb 2012-04-11 15:44:22