【发布时间】:2014-07-19 20:42:29
【问题描述】:
我想使用 CoreData。一段时间后,我手动创建了这个 coreData 文件。我正在尝试将一些值写入文件,但上下文始终为空。
- (NSManagedObjectContext *)managedObjectContext {
NSManagedObjectContext *context = nil;
AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
context = [delegate managedObjectContext];
if(context == nil)
{
NSLog(@"CONTEXT IS NIL");
}
return context;
}
方法没有错误但在这里崩溃:
//here is null
NSManagedObjectContext *context = [self managedObjectContext];
// Create a new managed object
NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"Kwejki" inManagedObjectContext:context];
上下文为空。如果我从 AppDelegate 对象获取此上下文,我不知道为什么它为空。我在我的应用程序中使用 TabBarController,它从第一个选项卡开始。怎么了?
更新::
@synthesize managedObjectContext = _managedObjectContext;
@synthesize managedObjectModel = _managedObjectModel;
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator;
- (NSManagedObjectContext *)managedObjectContext {
if (self.managedObjectContext != nil) {
return self.managedObjectContext;
NSLog(@"managedOC - != nil");
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
NSLog(@"coordinator - != nil");
//Here I get two errors below "Receiver type NSManagedObjectContext for instance message is a forward declaration"
self.managedObjectContext = [[NSManagedObjectContext alloc] init];
[self.managedObjectContext setPersistentStoreCoordinator:coordinator];
}
return self.managedObjectContext;
}
【问题讨论】:
-
请从 AppDelegate managedObjectContext 方法中发布代码。
-
...如果您是我的员工,请解释为什么您显然认为将应用程序委托用作包罗万象的单例是合适的。我怀疑这不是一个有用的评论。
-
我已经更新了帖子。我仍在学习目标 - C @Tommy,我是第一次使用 CoreData。
-
我可能错了,但消息“接收器类型 NSManagedObjectContext 例如消息是前向声明”向我表明您忘记导入核心数据标头。
-
是的,我已经导入了那个库并且错误消失了
标签: ios objective-c core-data