只需使用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模型没有在主包位置初始化,而是在其他地方初始化。

10-08 05:57