首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >-[NSURL initFileURLWithPath:]:nil字符串参数‘on NSManagedObjectModel

-[NSURL initFileURLWithPath:]:nil字符串参数‘on NSManagedObjectModel
EN

Stack Overflow用户
提问于 2010-07-11 07:23:10
回答 2查看 8.2K关注 0票数 9

只是试图进入核心数据的东西,但被划掉了。在我的AppDelegate中,我有以下代码:

代码语言:javascript
复制
- (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文件的名称-这样正确吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-13 12:34:23

通常更容易将其更改为

代码语言:javascript
复制
managedObjectModel_ = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];

然后,如果它是一个妈妈或妈妈,你仍然会得到模型。

票数 9
EN

Stack Overflow用户

发布于 2011-04-20 01:34:32

把“妈妈”改成“妈妈”对我很管用。Marcus S. Zarra的答案也适用于我,一旦我将语法修改为:

代码语言:javascript
复制
managedObjectModel_ = [[NSManagedObjectModel mergedModelFromBundles:nil] retain];

虽然我不知道这行是做什么的。

编辑:我做了更多的研究,现在我知道了上面这行是做什么的,以及为什么它能工作/不能工作。上面的代码行将搜索项目中的所有模型,并将它们添加到xcdatamodel中。如果您没有使用版本化的模型,这是可行的。然而,如果您在将来切换到使用版本化模型,这将导入模型的所有版本,因此您将把旧的和新的放在一起,这不是您想要的。因此,解决方案是做两件事中的一件。如果您想要使用非版本化的模型,请使用以下几行来获取模型:

代码语言:javascript
复制
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。完成此操作后,请使用以下行:

代码语言:javascript
复制
NSString *modelPath = [[NSBundle mainBundle]
    pathForResource:@"DataModel" ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
managedObjectModel_ = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];

注意,唯一的区别是ofType参数从@"mom“更改为@"momd”。我希望这篇文章能为每个试图理解CoreData.D的人澄清正在发生的事情。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3221225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档