我正在进行应用程序更新。 我从头开始重写了应用程序并切换到magicalrecords进行模型控制 继承人我的问题:
无法将模型与名为'foo''
的两个不同实体合并
在加载新的mom文件之前,是否可以检测并删除旧的“olddatabase.mom”文件?
我尝试过以下代码,就像我想的那样,我对该文件夹没有任何许可:)
NSString *path = [[NSBundle mainBundle]pathForResource:@"olddatabase" ofType:@"mom"];
if(path){
NSError* error = nil;
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager removeItemAtPath:path error:&error];
if(error)
NSLog(@"Error: %@",[error description]);
}
NSLog(@"path = %@",path);
我开始考虑将我的新“foo”实体名称更改为“foo2”或其他内容,但我真的很痴迷于使用适当的名称来使用我所以我很乐意学习是否有这样做的方式。
感谢阅读和(可能)回复:)
答案 0 :(得分:2)
好的我有完全相同的问题,这就是我解决它的方法......
我的新.xcdatamodelD有一个不同的名字。我认为这对我来说很重要,因为我可以指定魔术记录来使用特定的妈妈而不是搜索捆绑并抱怨:
无法将模型与名为'foo''
的两个不同实体合并
所以这很简单。我只是告诉Magic Record专门使用一个新的momd,然后使用以下设置调用创建核心数据栈......
[MagicalRecord setDefaultModelNamed:@"new_name.momd"];
[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"new_foosql.sqlite"];
如果你想要你可以核你的旧sql数据存储区,如果那就是你想要做的事情,堆栈上有许多关于重置coredata的答案。
答案 1 :(得分:1)
你描述的内容没有意义:
一个。您无法从捆绑包中删除任何内容。它是只读的。
B中。当人们更新您的新版本时,您的捆绑包中应该没有olddatabase.mom。最有可能的是它位于应用程序的用户文档文件夹中。
如果我正确地阅读了您的问题,您需要的是核心数据迁移。 Try this.
编辑:仅供参考
重新阅读OP的文字后,上面的B部分不正确。但由于OP已接受此答案,因此不允许删除答案。