将核心数据模型从 OSX 迁移到 IOS

Posted

技术标签:

【中文标题】将核心数据模型从 OSX 迁移到 IOS【英文标题】:Migrating Core Data Model from OSX to IOS 【发布时间】:2014-04-26 21:51:01 【问题描述】:

所以我将我的 xcdatamodeld(目录/包)复制到我的 ios 项目中。

[NSBundle mainBundle] URLPathForResource:@"MyDataModelName" withExtension:@"momd"]

不起作用。 我检查并按原样复制文件,扩展名为 .xcdatamodeld。所以如果我

[NSBundle mainBundle] URLPathForResource:@"MyDataModelName" withExtension:@"xcdatamodeld"]

它确实返回了文件,但是当我尝试创建 NSManagedObjectModel 时它不起作用。

所以我使用核心数据从 xcode 创建了一个新项目,并且项目中的数据模型文件确实具有 xcdatamodeld 的扩展名,类型为 -Core Data Model,但不知何故它被复制到应用程序的资源目录中作为.mod

那么谁是这样被抄袭的呢?

【问题讨论】:

【参考方案1】:

好的,这很奇怪......我没有将模型从 osx 拖到 ios 项目,而是将它从 finder 拖到 iOS 项目,它工作正常。当我第一次添加它时,它并没有将其识别为核心数据模型,尽管 xcode 检查器面板说核心数据模型。但是该文件不在编译源中。我尝试手动添加它并得到一个错误,它没有办法处理类型(null)的文件。

【讨论】:

【参考方案2】:

我发现使用.xcdatamodeld 文件的最安全/最可靠的方法是使用finder 从源移动/复制到您的目标位置,然后使用Xcode 菜单命令“将文件添加到项目.. ." 将相同的文件添加到您的项目结构中。

也许这个过程是不必要的,但对我来说它每次都有效。

【讨论】:

这应该总是有效的......如果/当它不起作用时,请检查添加 CDM 的文件夹/组的路径。如果您从头开始一个新项目,所有文件夹/组路径都应该是正确的,但如果您通过从其他项目复制大量文件夹/文件将项目结构组合在一起,则您的某些路径可能是错误的。 *** 如果您将现有的 CDM 添加到错误的路径中,您的项目将无法将其识别为 CDM 包(并且它会在您的编译构建阶段列表中显示为红色)

以上是关于将核心数据模型从 OSX 迁移到 IOS的主要内容,如果未能解决你的问题,请参考以下文章

iOS 核心数据轻量级迁移

如何将数据从 iOS 中的数据模型存储到核心数据中并以数据模型的格式获取

核心数据模型版本控制和数据迁移

核心数据版本控制和迁移

IOS/xcode:将核心数据从应用委托移动到模型类

通过迁移将核心数据实体及其数据移动到新的核心数据模型文件中