我是coredata的新手,我正在建立一个简单的数据库,结果是xml。
我正在测试是否存在记录,如果没有,请添加一个新记录然后保存,但是当我再次执行此操作时,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;
}
答案 0 :(得分:2)
问题出在NSNumber上。它一直将记录保存到数据库中,但从未找到它们。我现在已经将类型操作数据更改为NSString。
谢谢,
RL
答案 1 :(得分:1)
首先,你正在泄漏request
。其次,你应该做一些基本的调试来找到问题。设置一些断点并检查您的提取,以确保您插入到提取中的活动ID是有效值。确保您还使用正确的值正确填写您稍后创建的对象。了解所有情况以及如果您的问题尚未解决,请根据您的进度添加更多信息。
答案 2 :(得分:0)
在创建新对象后,您似乎并未实际保存新对象。尝试将以下代码添加到对象创建块:
[context save:&error];
if(error) {
NSLog(@"error saving entities: %@", error);
}