私はcoredataの初心者です。私はxmlの結果でシンプルデータベースを構築しています。CoreData - フェッチでオブジェクトが見つかりません
レコードが存在するかどうかを確認していない場合は、新しいレコードを追加して保存しますが、再度レコードを検索する代わりに、保存しています。
このクラスメソッドは2回呼び出され(xmlから2レコード)、メールクラスに保存されます。 ActivityIDはNSNumberです。
私は間違っていますか?
コード:
+(CompanyActivity *)createActivityWithInfoFromServer:(NSDictionary *)activityDictFromArray inManagedObjectContext:(NSManagedObjectContext *)context {
CompanyActivity *companyActivity = nil;
NSFetchRequest *request = [[NSFetchRequest alloc] init];
request.entity = [NSEntityDescription entityForName:@"CompanyActivity" inManagedObjectContext:context];
request.predicate = [NSPredicate predicateWithFormat:@"ActivityID == %@", [activityDictFromArray objectForKey:@"ActivityID"]];
NSError *error = nil;
companyActivity = [[context executeFetchRequest:request error:&error] lastObject];
NSLog(@"activity: %@", companyActivity);
if (!error && !companyActivity) {
companyActivity = [NSEntityDescription insertNewObjectForEntityForName:@"CompanyActivity" inManagedObjectContext:context];
companyActivity.ActivityID = [NSNumber numberWithInt:[[activityDictFromArray objectForKey:@"ActivityID"] integerValue]];
companyActivity.ActivityDescription_PT = [activityDictFromArray objectForKey:@"ActivityDescription_PT"];
companyActivity.ActivityDescription_EN = [activityDictFromArray objectForKey:@"ActivityDescription_EN"];
companyActivity.DateChangedStamp = [NSDate date];
}
else
NSLog(@"no Activity created. Errors: %@", error);
return companyActivity;
}
こんにちは、ポール。私はiOS 5でARCを使用しています。ActivityIDには値があります。私はそれが文脈に関連しているかもしれないと思うが、私は海岸ではない。私はNSEの数を持っていて、このメソッドを必要なだけ何度も呼び出した後、[コンテキスト・セーブ]を呼び出します。私は問題がここにあると思う...しかし、上記のコードでは、すべて正しいですか? –
上記のコードは正しいと思われます(エラーオブジェクトは常にnilです)、どのデータが操作されているかによって大きく異なります。メモリオブジェクトに不正なデータがあると、コンテキストを保存するときにエラーが発生する可能性があります。 –
こんにちは、エラーはありません。私はNSLogを持っていますが、私にはエラーはありません...私はGoogleTalkでiChatで話すことができますか?私はここに結果を投稿しますか? iChat:[email protected] googleTalk:[email protected] –