我在AppStore中有一个活动的App,它带有一个填充的数据存储。现在我想推出一个带有稍微更新的架构和一组新数据的新版本。旧数据无关紧要。如果我只是推送新版本的应用程序,我相信现有用户将遇到与不兼容的数据存储区的错误...我该如何避免这种情况?我不需要迁移现有数据,而是全新的应用程序。
修改:
仅供参考,这是我在对象管理器中加载持久性存储的URL:
NSURL *storeURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"MyObjects" ofType:@"storedata"]];
答案 0 :(得分:1)
编辑:
如果您将持久存储存储在主包中(因此它是只读的),您不必担心,因为新的持久存储(也包括在您的应用程序包中)我只会明显地覆盖旧的存储库
我认为删除现有的商店文件然后创建一个新文件就应该这样做。
如果_storeURL
是商店文件的路径,则可以按以下方式删除:
NSError *error = nil;
if ([fileManager fileExistsAtPath:_storeURL.path])
[fileManager removeItemAtURL:_storeURL error:&error];
当然,这应该仅在您最新推出的最新应用版本时完成。这可以通过在删除/重新创建商店之后将密钥存储在NSUserDefaults
中并让程序仅在启动时执行删除/创建来实现,而密钥不在那里。