2014-04-18 36 views
1

使用xcode项目处理一堆问题和未使用/错误的遗留代码 - 我们最近做出决定,开始一个新的项目,并从那里建立新的项目。一切都好多了,但我遇到了一个核心数据迁移问题。不同模型之间的核心数据迁移?

这个模型的绝大多数都是一样的,只需做一些调整 - 模型只包含6个对象,并且只有一个对象让我真正关心如何获取用户保存的内容,因此当我们释放它时,数据在那里。我在新项目中基本上从头开始创建新模型,所以我猜测应用程序试图访问基于ID的特定模型或不匹配的东西?

有没有人有任何想法可能的解决方案?

该应用程序崩溃下面的说法:目前

NSPersistentStore *persistentStore = [managedObjectStore addSQLitePersistentStoreAtPath:storePath fromSeedDatabaseAtPath:nil withConfiguration:nil options:options error:&error]; 

NSAssert(persistentStore, @"Failed to add persistent store with error: %@", error); 

现有的应用程序是在其原有的MODELA的第二个版本,和新的应用程序只有在第一个版本一个新的新鲜MODELA。我猜这可能与它有关?

+1

该项目需要包含旧模型和新模型以便迁移工作。它检查现有版本的捆绑软件并尝试创建映射模型(假设您使用轻量级迁移)。如果您没有使用轻量级迁移,则需要映射模型。否则,它不知道如何迁移你的东西。 – SpacePyro

+0

有趣 - 我怎么能处理两个对象文件,如foo.h和foo.m,具有相同的名称和模型之间可能不同的属性? – Mike

+1

我应该已经更清楚了:对于旧的模型,我的意思是您的.xcdatamodeld文件中的模型。您必须将该文件添加到您的新项目中,然后在其中添加该数据模型的新版本。 – SpacePyro

回答

0

我最终做了我自己的重量级移植。我将旧数据模型添加到新项目中,并将旧对象一次性迁移到新对象,并将它们存储在新数据库中。

0

我要发表评论,但我的回答是太长了......

一个愚蠢的问题第一... ...和我写这篇文章从来没有使用过RestKit ...

问题之一 - 它值得在新项目中通过RestKit的任何必需生成设置进行检查?

问题二 - 不应该在方法中包含fromSeedDatabaseAtPath的值吗?

对于问题1仍有令人满意的反应,试试这个...

1st;在Xcode中关闭你的新项目。打开Finder窗口,然后使用Finder将旧项目中旧的.xcdatamodeld文件复制到新项目目录/文件夹中,并根据需要重命名文件名称。

2nd;打开Xcode,然后在新项目中,选择文件菜单中的“将文件添加到项目...”选项,然后按照提示将旧的.xcdatamodeld文件添加到项目中。

3rd;在您的代码中,创建NSString以表示旧的.xcdatamodeld文件的路径,并将fromSeedDatabaseAtPath:之后的代码行包含在addSQLitePersistentStoreAtPath:fromSeedDatabaseAtPath:withConfiguration:options:error:方法中。

这是否帮助?

+0

感谢您的回应。我不确定你的具体问题是什么 - RestKit对这个项目并不陌生,所以我不认为这是一个构建设置问题。我已经使用restkit约6个月,现在多版本的对象模型没有问题。 – Mike

+0

我得到相同的问题:错误域= NSCocoaErrorDomain代码= 134140“该操作无法完成。(可可错误134140.)”UserInfo = 0x15defec0 {reason =无法找到或自动推断映射模型迁移, – Mike

+0

也,我是否需要从旧模型生成目标文件,还是应用程序只需要旧模型本身? – Mike