我正在尝试将数据添加到CoreData。
这是我的代码。但是我遇到了这个错误。在这种情况下我该怎么办?
那就是我的ViewController.h
@interface LoginViewController : UIViewController {
NSManagedObjectContext *managedObjectContext;
}
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator;
这是我的.m文件
Person *person = [[Person alloc] initWithJSONString:string];
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObjectContext *object = [NSEntityDescription insertNewObjectForEntityForName:@"Users" inManagedObjectContext:context];
[object setValue:person.name forKey:@"name"];
[object setValue:person.id forKey:@"userId"];
[object setValue:person.statu forKey:@"statu"];
[object setValue:person.token forKey:@"token"];
[object setValue:person.sonuc forKey:@"sonuc"];
- (NSManagedObjectContext *)managedObjectContext
{
if (managedObjectContext != nil) return managedObjectContext;
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
managedObjectContext = [[NSManagedObjectContext alloc] init];
[managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return managedObjectContext;
}
这是错误。
'+entityForName: nil is not a legal NSManagedObjectContext parameter searching for entity name 'Users''
谢谢你的帮助
最佳答案
问题的核心是您尚未考虑persistentStoreCoordinator
的来源,并且永远不会创建此对象。
您的支票if (coordinator != nil)
隐藏了此问题。相反,您应该努力进行设置,以便coordinator
绝不是nil
。然后可以删除该检查,或者甚至可以用断言代替这种检查:NSAssert(coordinator != nil, @"There is no persistent store coordinator.")
。
如果持久性存储协调器来自此视图控制器外部,则建议将其作为视图控制器初始化的一部分传递。如果视图控制器可以自己设置持久性存储协调器,则可以将其作为初始化的一部分来进行,也可以延迟加载。