CoreDataを使用してデータベース内の既存のレコードを更新しようとしていますが、管理オブジェクトアクセッサメソッドを使用しているときに例外が発生しています。iOS:データ更新時のCoreData例外
コードの抜粋:エラーの原因となっている
NSManagedObjectContext *tmpManagedObjectContext = [self.fetchedResultsController managedObjectContext];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:tmpManagedObjectContext];
[request setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"contact_id = %@", [dict objectForKey:@"contact_id"]];
[request setPredicate:predicate];
NSError *error = nil;
[request setResultType:NSDictionaryResultType];
[request setPropertiesToFetch:[NSArray arrayWithObjects:@"first_name",@"sync_status",nil]];
Contact *contact = [[managedObjectContext executeFetchRequest:request error:&error] objectAtIndex:0];
contact.sync_status = @"Y";
error = nil;
if (![tmpManagedObjectContext save:&error]) {
NSLog(@"Error setting sync status on contact record - error: %@", [error localizedDescription]);
}
行は次のようになります。
contact.sync_status = @"Y";
エラーがキャッチされない例外により 'NSInvalidArgumentException'、理由にアプリを終了* です:「 - [NSKnownKeysDictionary1 setSync_status:]:インスタンスに送信された認識できないセレクタ0x8907fd0 ' *ファーストスローコールスタック:
連絡先は私がXcodeで自動的に生成したNSManagedObjectクラスです。
ここで私のアプローチは間違っていますか?私はレコードの検索や削除に何の問題もありませんでしたが、私はデータを更新する方法につまづいています。
ご迷惑をおかけして申し訳ございません。ありがとう。
デバッガの 'contact'オブジェクトを見てください。あなたが思うタイプではないようです。 – jrturton