gpt4 book ai didi

ios - 从 IOS 上安装的应用程序中删除旧的未使用的 .mom(d) 文件?

转载 作者:行者123 更新时间:2023-11-28 20:21:40 25 4
gpt4 key购买 nike

我正在处理应用程序更新。我从头开始重写了应用程序并切换到 magicalrecords 进行模型控制这是我的问题:

  1. 我创建了一个新的“newdatabase.xcdatamodel”文件,其中包含一个名为“foo”的实体。
  2. 在应用程序的第一个版本中,我还有一个“olddatabase.xcdatamodel”,其中还包含一个名为“foo”的实体
  3. 当用户从头开始安装应用程序时没有问题。
  4. 如果用户使用的是以前版本的应用程序,他的设备上有“olddatabase.mom”文件,其中还包含旧的“foo”实体,所以您可以想象,应用程序崩溃并出现错误:

Can't merge models with two different entities named '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”或其他名称,但我真的很着迷于为我使用的东西使用专有名称,所以我很乐意了解是否有方法来做到这一点。

感谢阅读和(可能)回复 :)

最佳答案

好的,我遇到了完全相同的问题,这就是我解决它的方式......

我的新 .xcdatamodelD 有一个不同的名字。我认为这对我来说很重要,因为我可以指定 Magic Record 使用特定的 momd 而不是它搜索包并提示:

Can't merge models with two different entities named 'foo''

那么就很简单了。我只是告诉 Magic Record 专门使用一个新的 momd,然后使用以下设置调用创建核心数据堆栈...

[MagicalRecord setDefaultModelNamed:@"new_name.momd"];
[MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreNamed:@"new_foosql.sqlite"];

如果您愿意,您可以对旧的 sql 数据存储进行 nuke,如果那是您想要做的,堆栈上有很多关于重置核心数据的答案。

关于ios - 从 IOS 上安装的应用程序中删除旧的未使用的 .mom(d) 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15654660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com