【发布时间】:2015-10-06 10:14:22
【问题描述】:
我想从 AppDelegate 获取托管对象上下文,但是我将两行代码放入方法中后应用程序崩溃了,即使我没有做任何其他事情,并且在调试区域中有一条消息:“CoreData:无法加载 NSManagedObjectModel。nil 是非法的 URL 参数..."
我的方法中添加的代码:
AppDelegate *delegate = [UIApplication sharedApplication].delegate;
NSManagedObjectContext *managedObjectContext = delegate.managedObjectContext;
-AppDelegate 中的managedObjectModel 方法:
- (NSManagedObjectModel *)managedObjectModel {
// The managed object model for the application. It is a fatal error for the application not to be able to find and load its model.
if (_managedObjectModel != nil) {
return _managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"FoodPin" withExtension:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return _managedObjectModel;
}
和 -managedObjectContext 方法:
- (NSManagedObjectContext *)managedObjectContext {
// Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.)
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (!coordinator) {
return nil;
}
_managedObjectContext = [[NSManagedObjectContext alloc]initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
return _managedObjectContext;
}
“FoodPin”是我的项目名称。那么这里出了什么问题?我是 iPhone 编程的新手(尤其是 Core Data)。
谁能帮帮我?
谢谢...
【问题讨论】:
-
问题是
[[NSBundle mainBundle] URLForResource:@"FoodPin" withExtension:@"momd"];将 nil 返回到modelURL。您的项目中是否有一个名为 FoodPin 的核心数据模型? -
哦..非常感谢,我忘记更改 .xcdatamodeld 文件的名称了!
标签: ios objective-c iphone core-data