使用CoreData创建一个新的iPhone应用程序。我的应用程序构建时没有任何警告或错误,并且我的.xcdatamodeld也没有错误或警告。
出于某种原因,我的managedObjectModel不会初始化,我无法解决原因。
- (NSManagedObjectModel *)managedObjectModel {
if (__managedObjectModel) {
return __managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"BAK" withExtension:@"momd"];
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return __managedObjectModel;
}
modelURL正确解析并指向我编译的数据模型,但managedObjectModel在其alloc行之后保持为nil。控制台也没有输出。什么可能导致这个或我错过了什么?
__managedObjectModel声明如下:
.h
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
.m
@synthesize managedObjectModel = __managedObjectModel;
感谢您的帮助。
答案 0 :(得分:1)
我的赌注是你以某种方式改变了模型,很可能是名字(“BAK”到其他东西或其他东西到“BAK”)。
NSManagedObjectModel的初始化非常简单。如果它已初始化并存在,则返回它,否则使用您提供的名称(“BAK”)初始化ManagedObjectModel。
唯一的另一种解释是,不知何故,某些方面,Core Data模型没有在主bundle位置初始化,而是在其他地方初始化。