現在、すべてのユーザーの iOS デバイスで同じデータを利用できるように、Core Data ストア全体を iCloud に同期しています。これはすべて、次のようにしてMagicalRecordを使用してセットアップされます。
[MagicalRecord setupCoreDataStackWithiCloudContainer:@"xxxxxxx.com.mydomain.MyAppName" localStoreNamed:@"MyAppName"];
ただし、デバイス固有のエンティティをデータベースに保存したいと考えています。これは基本的に、Web から取得した情報をキャッシュするために使用されますが、これがユーザーの iCloud アカウントのスペースを占有することは望ましくありません。
これを行うには2つの方法があると思います:
- データベースのどのテーブルを同期するかを選択し、デバイス固有のエンティティに使用されるテーブルを無視します。
- MagicalRecord で複数のデータベースを管理し、同期するエンティティを 1 つのデータベースに保存し、デバイス固有のエンティティを別のデータベースに保存します。
これら2つの方法のいずれかが可能かどうか、またはどちらが維持および/または実装が最も簡単かはわかりません。
これが可能かどうか、またどのように行うことができるかを知っている人はいますか? コード例をいただければ幸いです。
アップデート
以下の回答でcasademoraが提案したアプローチに従おうとしていますが、そうすると、両方のストアがiCloudに同期されてしまいます。に以下を追加しましたapplication:didFinishLaunchingWithOptions:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[MagicalRecord setupCoreDataStackWithiCloudContainer:@"xxxxxxxxx.com.mydomain.MyAppName" localStoreNamed:@"MyAppName_iCloud"];
[[NSPersistentStoreCoordinator coordinatorWithInMemoryStore] addSqliteStoreNamed:@"MyAppName" withOptions:nil];
// Override point for customization after application launch.
return YES;
}
プロジェクトに 2 つのデータ モデルを追加しました。1 つはMyAppName_iCloud.xcdatamodeldという名前で、もう 1 つはMyAppName.xcdatamodeldという名前です。
MyAppName ストアが iCloud に同期されることは避けたいと思います。