如何删除iCloud中的数据

时间:2013-08-08 13:58:16

标签: ios icloud nspersistentstore

我一直在努力将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存储迁移到应用程序沙箱中的新位置,但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];

2 个答案:

答案 0 :(得分:5)

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

Debug->iCloud->Delete Container Contents

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

答案 1 :(得分:1)

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

登录developer.icloud.com,查看当时是否存储了任何内容。

要删除,请参阅我的回答here,了解我过去使用过的内容: