只是试图进入核心数据的东西,但被划掉了。在我的AppDelegate中,我有以下代码:
- (NSManagedObjectModel *)managedObjectModel {
if (managedObjectModel_ != nil) {
return managedObjectModel_;
}
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"DataModel" ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
managedObjectModel_ = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
return managedObjectModel_;
}其中@"DataModel“是我的.xcdatamodel文件的名称-这样正确吗?
发布于 2010-07-13 12:34:23
通常更容易将其更改为
managedObjectModel_ = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];然后,如果它是一个妈妈或妈妈,你仍然会得到模型。
发布于 2011-04-20 01:34:32
把“妈妈”改成“妈妈”对我很管用。Marcus S. Zarra的答案也适用于我,一旦我将语法修改为:
managedObjectModel_ = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];虽然我不知道这行是做什么的。
编辑:我做了更多的研究,现在我知道了上面这行是做什么的,以及为什么它能工作/不能工作。上面的代码行将搜索项目中的所有模型,并将它们添加到xcdatamodel中。如果您没有使用版本化的模型,这是可行的。然而,如果您在将来切换到使用版本化模型,这将导入模型的所有版本,因此您将把旧的和新的放在一起,这不是您想要的。因此,解决方案是做两件事中的一件。如果您想要使用非版本化的模型,请使用以下几行来获取模型:
NSString *modelPath = [[NSBundle mainBundle]
pathForResource:@"DataModel" ofType:@"mom"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
managedObjectModel_ = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];如果要使用版本化模型(推荐),请选择该模型,然后从菜单栏中运行Design -> Data model -> Add model Version以创建版本化模型。这会自动将模型的扩展名从xcdatamodel更改为xcdatamodeld。完成此操作后,请使用以下行:
NSString *modelPath = [[NSBundle mainBundle]
pathForResource:@"DataModel" ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
managedObjectModel_ = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];注意,唯一的区别是ofType参数从@"mom“更改为@"momd”。我希望这篇文章能为每个试图理解CoreData.D的人澄清正在发生的事情。
https://stackoverflow.com/questions/3221225
复制相似问题