只需使用CoreData创建一个新的iPhone应用程序。我的应用程序生成时没有任何警告或错误,并且我的.xcdatamodel也在其中建模,没有错误或警告。
由于某种原因,我的managedObjectModel无法初始化,因此我无法弄清原因。
- (NSManagedObjectModel *)managedObjectModel {
if (__managedObjectModel) {
return __managedObjectModel;
}
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"BAK" withExtension:@"momd"];
__managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return __managedObjectModel;
}
modelURL可以正确解析并指向我的已编译数据模型,但是managedObjectModel在其分配行之后保持为零。控制台也没有输出。是什么原因导致的?我想念什么?
__managedObjectModel声明如下:
.h
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel;
.m
@synthesize managedObjectModel = __managedObjectModel;
谢谢你的帮助。
最佳答案
我敢打赌,您以某种方式更改了模型,很可能是将名称更改了(将“BAK”更改为其他名称,或者将其他名称更改为“BAK”)。
NSManagedObjectModel的初始化非常简单。如果已经初始化并存在,则返回它,否则使用您提供的名称(“BAK”)初始化ManagedObjectModel。
唯一的另一种解释是,某种程度上,Core Data模型没有在主包位置初始化,而是在其他地方初始化。