1

我在 AppStore 中有一个活动的应用程序,它带有填充的数据存储。现在我想推送一个新版本,其中包含稍微更新的架构和一组新数据。旧数据无关紧要。如果我只是简单地推送应用程序的新版本,我相信现有用户会遇到数据存储不兼容的错误......我该如何避免这种情况?我不需要迁移现有数据,这一切都在新应用程序中。

编辑

仅供参考,这是我在对象管理器中加载持久存储的 URL:

NSURL *storeURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"MyObjects" ofType:@"storedata"]];
4

1 回答 1

1

编辑:

如果您将持久性存储存储在主包中(因此它是只读的),您不必担心,因为新的持久性存储(我想也包含在您的应用程序包中)只会覆盖旧的。

我认为删除现有的商店文件然后创建一个新的应该这样做。

如果_storeURL是您的商店文件的路径,您可以像这样删除:

NSError *error = nil;
if ([fileManager fileExistsAtPath:_storeURL.path])
  [fileManager removeItemAtURL:_storeURL error:&error];

当然,这应该仅在您的最新应用程序版本首次启动时完成。这可以通过NSUserDefaults在删除/重新创建存储后存储密钥并让程序仅在启动时密钥不存在时才执行删除/创建来实现。

于 2012-10-18T19:18:38.883 回答