我目前正在将整个Core Data商店同步到iCloud,以便所有用户iOS设备上都可以使用相同的数据。这一切都是使用MagicalRecord设置的:
[MagicalRecord setupCoreDataStackWithiCloudContainer:@"xxxxxxx.com.mydomain.MyAppName" localStoreNamed:@"MyAppName"];
但是,我想在数据库中存储一些特定于设备的实体。它基本上用于缓存从Web检索到的信息,我不希望这占用用户iCloud帐户的空间。
我相信有两种方法可以做到这一点:
我不知道这两种方式中的任何一种是否可行,或者哪种方式最易于维护和/或实施。
有谁知道这是否可行以及如何做到这一点?我们非常感谢代码示例。
更新
我正在尝试遵循casademora in the answer below提出的方法,但是当我这样做时,我的两个商店最终都会同步到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。
答案 0 :(得分:2)
MagicalRecord只是一组有用的辅助方法,可以让CoreData更容易处理。 MagicalRecord不是CoreData的包装器或替代品。这是了解CoreData可以做什么的关键,MagicalRecord可以做到。因此,如果CoreData可以处理多个持久存储,MagicalRecord也可以。唯一的技巧是找到适合您需要的正确帮助方法。在这种情况下,该方法位于NSPersistentStoreCoordinator中。看一下-addSqliteStoreNamed:方法。这将完成你所需要的,没有常规addPersistentStore:方法的所有额外参数(无论如何实际上都在封面下使用)