我是coredata的新手,我正在構建一個簡單的數據庫,其結果是一個xml。CoreData - fetch找不到對象
我正在測試以查看記錄是否存在,如果沒有,添加一個新的,然後保存,但是當我再次這樣做時,e保持保存,而不是找到記錄。
這個類方法被調用兩次(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有一個值。我認爲這可能與背景有關,但我並不支持。我有一個NSEnumeration,並根據需要多次調用此方法後,我稱[上下文保存]。我認爲問題在這裏......但是,在上面的代碼中,是完全正確的嗎? –
上面的代碼似乎是正確的(假設你的錯誤對象總是零),它高度依賴於正在操作的數據。如果在內存對象中存在任何不良數據,則可能會在保存上下文時收到錯誤。 –
嗨,沒有錯誤。我有NSLog,沒有人給我錯誤...我們可以在iChat或GoogleTalk上聊天嗎,我在這裏發佈結果? iChat:[email protected] googleTalk:[email protected] –