我目前正在将我的整个 Core Data 存储同步到 iCloud,以便所有用户 iOS 设备上都可以使用相同的数据。这一切都是使用MagicalRecord设置的:
[MagicalRecord setupCoreDataStackWithiCloudContainer:@"xxxxxxx.com.mydomain.MyAppName" localStoreNamed:@"MyAppName"];
但是,我想在数据库中存储一些特定于设备的实体。它基本上用于缓存从网络检索到的信息,我不希望这占用用户 iCloud 帐户的空间。
我相信有两种方法可以做到这一点:
- 选择应同步数据库的哪些表并忽略用于设备特定实体的表。
- 让 MagicalRecord 管理多个数据库并将应同步的实体存储在一个数据库中,并将特定设备存储在另一个数据库中。
我不知道这两种方法中的任何一种是否可行,或者哪种方法最易于维护和/或实施。
有谁知道这是否可能以及如何做到?一个代码示例将不胜感激。
更新
我正在尝试遵循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;
}
我在项目中添加了两个数据模型。一个名为MyAppName_iCloud.xcdatamodeld,一个名为MyAppName.xcdatamodeld。
我想避免 MyAppName 存储同步到 iCloud。