我无法使用核心数据更新数据库中的对象,这是我的函数:
- (void) saveItem:(NSDictionary*)dico {
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Item"
inManagedObjectContext:managedObjectContext];
Item *item =(Item *)[entity ReadSingleForKey:@"identifier"
value:[dico valueForKey:@"identifier"]
inContext:managedObjectContext];
if (!item) {
item = [[[NSManagedObject alloc] initWithEntity:entity
insertIntoManagedObjectContext:managedObjectContext] autorelease];
item.identifier = [dico valueForKey:@"identifier"];
}
item.title = [dico valueForKey:@"title"];
NSError *error = nil;
if (![managedObjectContext save:&error])
{
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}else{
NSLog(@"No error found.");
}
}
即使“item”不是nil,数据库中的对象也不会改变&我总是“找不到错误。”。
- (NSManagedObject *) ReadSingleForKey:(NSString *) key
value:(id) value inContext:(NSManagedObjectContext *) context{
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:self];
[request setPredicate:[NSPredicate predicateWithFormat:@"%K = %@", key, value]];
[request setFetchLimit:1];
NSError *error;
NSArray *arr = [context executeFetchRequest:request error:&error];
if (arr && [arr count]) {
return [arr objectAtIndex:0];
}
return nil;
}
任何想法??
答案 0 :(得分:3)
您的代码存在一些问题,导致难以确定错误。
1)没有错误处理。
2)模糊的私人方法ReadSingleForKey
- 它返回什么?
3)item
在同一方法中定义为类型Item
和不同类型NSManagedObject
。
输入NSLog
语句或断点来检查dico
和item
的值。你很快就会找到出错的地方。
此错误的另一个潜在来源是您以后如何从数据库中读取数据。现在我假设这是正常的。
答案 1 :(得分:0)
问题出在我的Item类中:
我使用@synthesize
代替@dynamic