Core DataストアのiCloud同期を組み込んだアプリケーション(単一のストア/モデル/コンテキストを持つ単純なアプリケーション)に取り組んでいます。ストアには画像データも含まれているため、かなり大きくなる可能性がありますので、必要に応じて同期を無効にできる設定を追加したいと思います。両方のシナリオでCoreDataを使用するためのサンプルコードをいくつか見てきましたが、iCloudを有効にした場合と無効にした場合の唯一の本当の違いは、NSPersistentStoreCoordinator
追加時に渡されるオプションです。そういうものとして、私はこのようなことをすることについて考えていました:
NSPersistentStoreCoordinator *psc;
NSDictionary* options;
//Set options based on iCloud setting
if ([enableSwitch isOn]) {
options = [NSDictionary dictionaryWithObjectsAndKeys:
@"<unique name here>", NSPersistentStoreUbiquitousContentNameKey,
cloudURL, NSPersistentStoreUbiquitousContentURLKey,
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption,
nil];
} else {
options = nil;
}
//Add the coordinator
if (![psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:options error:&error]) {
//Handle error
}
だから、私は上記についていくつか質問があります:
- 私の仮定は正しいですか、それとも異なる必要がある2つの状態の間にもっとありますか?
- 多くの場合、このコードはアプリケーションデリゲートで呼び出されるため、通常、アプリケーションの実行ごとに1回だけ呼び出されます。ユーザーが設定を切り替えるときに、必要なオンデマンドの変更に対応するための適切な戦略はありますか?
ありがとう!