2013-04-30 130 views
1

嗨,我已經使用屬性類型可轉換,並且我遵循論壇中的歸檔過程。將自定義類保存到Coredata中

但它說

CoreData:警告:沒有NSValueTransformer使用類名稱 'SurveyResults' 被發現的屬性 '調查' 對實體 'SurveyData' 2013年4月30日09:44:16.022 TestReachability [11641: C07] - [SurveyApplication encodeWithCoder:]:無法識別的選擇發送到實例0x845cb00 2013年4月30日09:44:16.023 TestReachability [11641:C07] *終止應用程序由於未捕獲的異常 'NSInvalidArgumentException',原因:「 - [ SurveyApplication encodeWithCoder:]:無法識別的選擇器發送到實例0x845cb00'

這裏我我的代碼

SurveyApplication *survey =[[SurveyApplication alloc]init]; 
[email protected]"dheeraj"; 
[email protected]"573-356-2598"; 

NSManagedObject *aStory = [NSEntityDescription insertNewObjectForEntityForName:@"SurveyData"inManagedObjectContext:self.managedObjectContext]; 
[aStory setValue:survey forKey:@"survey"]; 
NSError *saveError = [[NSError alloc]init]; 
if (![self.managedObjectContext save:&saveError]) { 
    NSLog(@"%@",saveError); 
} 

SurveyAppplication對象是我的自定義類和IM試圖創建一個對象,然後存儲它的核心數據,你.Could請幫助我。

感謝 Dheeraj

+0

請顯示調查應用程序類的代碼。 – Wain 2013-04-30 17:28:27

回答

5

這不足以使屬性變形,還需要安排的轉變發生。你不能只告訴核心數據來轉換任何舊對象,並期望它知道該怎麼做。你有幾個選擇:

  1. 不要告訴Core Data如何轉換數據。在這種情況下,Core Data將嘗試在您的對象上調用encodeWithCoder:將其轉換爲NSData。這就是爲什麼你會得到提到這個方法的錯誤 - 它試圖調用你的類的方法,但是這種方法不存在。在這種情況下,您的課程必須符合NSCoding以進行轉換。

  2. 告訴核心數據如何轉換數據。在這種情況下,您將創建執行轉換的NSValueTransformer的子類。您可以在覈心數據模型編輯器或代碼中的屬性上對此進行配置。在這種情況下,您必須擁有知道如何執行轉換的定製轉換器類

+0

非常感謝湯姆,想通了......你的回答如此清澈透明 – 2013-05-06 23:20:07