我的项目今天在生产中有一个非常丑陋的iCloud实现,我打算在下次更新时禁用它(我们不需要iCloud)。以下是我将用户从iCloud迁移到本地商店所采取的方法 - 该更新从应用程序中删除了iCloud权利,并且在应用程序启动时启动了此简单事件序列:在iOS7上关闭iCloud核心数据的错误
如果存在iCloud商店([[的NSFileManager defaultManager] fileExistsAtPath:[legacyStoreUrl路径]]
- 负载的 “传统” 的iCloud商店
迁移的iCloud存储到本地存储
([_persistentStoreCoordinator migratePersistentStore:legacyStore的toURL:目标StoreUrl选项:选项withType:NSSQLiteStoreType错误:& legacyStoreMigrationError]);
删除旧存储
([文件管理removeItemAtURL:legacyStoreUrl错误:& legacyStoreRemovalError])
否则
- 负载(或创建)本地存储
这一切都很好 - 在iOS6上使用。
当我在iOS7上运行相同的代码来迁移本地存储时,它似乎找不到iCloud存储。我没有得到任何错误的迹象,调用FileManager来询问商店是否仅仅返回false。我验证了升级版应用程序使用的商店的网址与之前版本中使用的网址完全相同。另请注意,应用程序的现有版本在iOS7上运行时不会在访问iCloud商店时遇到任何问题。
任何想法为什么这可能是或可能导致其他什么调查?
你说得对。另一个因素是,我对传统商店是否存在的测试似乎不像我在iOS7上预期的那样工作。即使启用了iCloud,[[NSFileManager defaultManager] fileExistsAtPath:[legacyStoreUrl path]]始终返回false。我需要努力寻找不同的测试,但是这个特殊的问题已经解决了。谢谢! – moliveira
还有一个更新 - 我更新为使用removeUbiquitousContentAndPersistentStoreAtURL:options:error方法,但shm和wal文件仍然存在。他们似乎无害(我重命名商店文件)。 – moliveira