【发布时间】:2013-11-29 21:37:27
【问题描述】:
我正在使用新的 iOS 7 API 将 Core Data 与 iCloud 同步。这是一个非常简单直接的 API,但我找不到禁用它并再次使用本地存储的有效方法。没有数据丢失。
我正在像这样创建我的 iCloud persistantStore。它就像一个魅力。
[[context persistentStoreCoordinator] addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:[NSURL fileURLWithPath:[self iCloudFilePath]] options:@{ NSPersistentStoreUbiquitousContentNameKey: @"Favorite" } error:&error];
但是,我尝试使用新的迁移 API,将商店从 iCloud 商店迁移到本地商店,如下所示:
方法一使用*icloudps作为存储,方法二使用*ps作为存储。
NSPersistentStore *icloudps = [[[context persistentStoreCoordinator]
persistentStores] objectAtIndex:0];
NSPersistentStore *ps = [[context persistentStoreCoordinator]
addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil URL:[icloudps URL] options:nil error:&error];
[[context persistentStoreCoordinator] migratePersistentStore:icloudps
toURL:[NSURL fileURLWithPath:[self filePath]]
options:@{ NSPersistentStoreRemoveUbiquitousMetadataOption: @YES }
withType:NSSQLiteStoreType error:&error];
方法 1 导致此崩溃:
由于未捕获的异常而终止应用 'NSObjectInaccessibleException',原因:'CoreData 无法满足 '0xd000000000080002 的故障 x-coredata://153BBFEA-0319-4F10-AEA4-1DA12A21BFFF/Favorite/p2>''
方法二在此:
* 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“nil 不是有效的持久性” 商店'
我不知道如何让它工作。希望有人可以提供帮助。
【问题讨论】:
-
尝试设置 JOURNAL=DELETE 选项以避免在 WAL 模式下运行。如果现有文件已在 WAL 模式下使用,您可能必须以某种方式强制检查点。
-
你是对的@DuncanGroenewald。迁移在禁用 WAL 模式的情况下工作。谢谢。
-
请向 Apple 提交错误报告
-
好吧,它仍然没有按预期工作。我不确定问题到底出在哪里,在 iCloud 实现中还是在其他地方。
-
什么不工作?
标签: ios core-data ios7 core-data-migration