2

我一直在努力将 iCloud 存储迁移到应用程序沙箱中的本地存储。代码如下所示(为清楚起见,已删除错误处理代码):

NSPersistentStore *iCloudStore = [_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:legacyStoreUrl options:options error:&error];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *targetStoreUrl = [self localStorageUrl];
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                       [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                       [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
                       nil];

[_persistentStoreCoordinator migratePersistentStore:legacyStore toURL:targetStoreUrl options:options withType:NSSQLiteStoreType error:nil];

至此我们已经成功将iCloud store迁移到了应用沙箱中的新位置,但是iCloud中还有数据和旧的sqlite文件在原地……下面一行删除了sqlite文件

[fileManager removeItemAtURL:legacyStoreUrl error:nil]

因此,在运行所有这些之后,据我所知,我的文件系统和持久存储看起来不错。缺少的一点是存储在 iCloud 中的数据不会从 iCloud 中删除(尽管应用程序不再访问它)。以编程方式删除 iCloud 数据还需要做什么?苹果 iCloud 文档提到删除事务日志,但我的 Documents 文件夹中没有任何其他需要清理的文件。任何帮助深表感谢!

更新:

iCloud 商店最初是使用以下选项设置的:

NSURL *ubiquityContainerUrl = [fileManager URLForUbiquityContainerIdentifier:nil];
NSString* coreDataCloudContent = [[ubiquityContainerUrl path] stringByAppendingPathComponent:@"data"];



NSURL *coreDataUrl = [NSURL fileURLWithPath:coreDataCloudContent];

options = [NSDictionary dictionaryWithObjectsAndKeys:
               [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
               [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
               @"MyAppName.store", NSPersistentStoreUbiquitousContentNameKey,
               coreDataUrl, NSPersistentStoreUbiquitousContentURLKey,
               nil];
4

2 回答 2

6

我刚刚发现 Xcode 允许您使用 Xcode 菜单重置容器:

Debug->iCloud->Delete Container Contents

能够在线查看内容也很有帮助:https ://developer.icloud.com/

于 2014-04-07T16:08:27.360 回答
1

事务日志文件夹将位于您NSPersistentStoreUbiquitousContentURLKey在 iCloud 中创建商店时设置的任何位置,如果您选择放置它,它可能位于 Documents 文件夹之外。

登录developer.icloud.com并查看此时是否已存储任何内容。

要删除,请在此处查看我过去使用过的内容的答案:

于 2013-08-09T09:45:46.887 回答