我一直在使用UIViewController来管理Core Data。现在我想移动并更好地组织代码,但意识到 NSManagedObjectContext 只能在我的 UIViewController 类中正常工作。
尝试保存或获取其他类中的值会得到未解决的错误...
if ( ([context hasChanges]) ) {
NSError *error = nil;
if ( (![context save:&error]) ) {
return true ;
} else {
NSLog(@"Unresolved error %@, %@, %@, %@", error, [error userInfo],[error localizedDescription], [error localizedFailureReason] );
return false ;
}
} else return false ;
得到 ..." 未解决的错误
(空(, (空(, (空(, (空( "我认为获取上下文是一个问题...
- (NSManagedObjectContext *)managedObjectContext {
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]) {
context = [delegate managedObjectContext];
}
return context;
}
但是如果我从视图控制器传递 NSManagedObjectContext 对象并从此类中保存或获取,仍然不起作用。所以,需要在UIViewController中"[上下文保存:&error]"才能工作。
我需要从自定义类访问 NSManagedObjectContext 来组织代码... 有什么意义,有什么想法吗?
[context save:&error]
在你的代码中工作得很好。这就是错误为空的原因。问题只是你的逻辑是反向的:你去"假"分支,而实际上保存成功了。