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 ストアをアプリケーション サンドボックスの新しい場所に正常に移行しましたが、iCloud にはまだデータがあり、古い sqlite ファイルが配置されています... 次の行は sqlite ファイルを削除します

[fileManager removeItemAtURL:legacyStoreUrl error:nil]

したがって、これらすべてを実行した後、私のファイル システムと永続ストアは、私が知る限り良好に見えます。1 つ欠けているのは、iCloud に保存されたデータが iCloud から削除されないことです (ただし、アプリからはアクセスされなくなります)。プログラムで iCloud データを削除するには、他に何が必要ですか? Apple iCloud のドキュメントには、トランザクション ログの削除が記載されていますが、ドキュメント フォルダにクリーンアップが必要な他のファイルはありません。どんな助けでも大歓迎です!

アップデート:

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 に答える