NSPersistentStore
いいえ、一度存在したオブジェクトのオプションを変更することはできません。オプションを指定できるのは、永続ストアを に追加するときだけNSPersistentStoreCoordinator
です。オプションの変更に最も近い方法は、コア データ スタック全体を破棄し、別のオプションでやり直すことです。
ただし、次の理由から、それは役に立ちません。
iCloud が利用可能であることを検出した場合でも (NSFileManager
その経由で、ubiquityIdentityToken
または を呼び出して を使用しているURLForUbiquityContainerIdentifier:
と思います)、 への呼び出しがaddPersistentStoreWithType:configuration:URL:options:error:
しばらくブロックされる可能性があります。iCloud に利用可能な新しいデータがある場合、永続ストアを追加するまでダウンロードは開始されず、ダウンロード プロセスが完了するまでそのメソッドは戻りません。そして時々、iCloud は明確な理由もなく、しばらくそのメソッドをブロックするだけです。
iCloud 以外のオプションを使用しているときにユーザーがデータを変更できるようにした場合、それらの変更は後でクラウドに自動的に送信されません。Core Data は、iCloud がアクティブな間にデータが変更された場合にのみ変更を iCloud に送信します。これにより、トランザクションが生成されます。ユーザーが行った変更を読み込んで再保存する必要があります。そうしないと、それらの変更がクラウドに反映されません。
残念ながら、iCloud で Core Data を使用する際に大きなつまずき点の 1 つにぶつかりました。Core Data が iCloud との通信を終了するまで、完全なデータ ストアを利用可能にすることはできません。これは、永続ストアを追加する呼び出しがそれまで返されないためです。そして、そのプロセスをスピードアップするために何もすることはできません. これは、Core Data で iCloud を使用し続ける場合に遭遇する頭痛の種の 1 つにすぎません。
データの性質によっては、2 つのデータ ストアを使用できる場合があります。1 つは純粋にローカルで、もう 1 つは iCloud 経由で同期されます。純粋にローカルのデータ ストアを利用できるようにし、iCloud のデータ ストアが十分に機能するように機能をまとめようとすることもできます。ただし、1 つのデータ ストアに固執すると、遅延が発生します。