iphone - 使用 MagicalRecord 的多个数据库或仅将部分数据库同步到 iCloud

标签 iphone ios ipad core-data magicalrecord

我目前正在将整个核心数据存储同步到 iCloud,以便所有用户 iOS 设备上都可以使用相同的数据。这都是使用 MagicalRecord 设置的通过这样做:

[MagicalRecord setupCoreDataStackWithiCloudContainer:@"xxxxxxx.com.mydomain.MyAppName" localStoreNamed:@"MyAppName"];

但是,我想在数据库中存储一些设备特定的实体。它主要用于缓存从网络检索的信息,我不希望它占用用户 iCloud 帐户上的空间。

我相信有两种方法可以做到这一点:

  1. 选择应同步的数据库表并忽略用于设备特定实体的表。
  2. 让 MagicalRecord 管理多个数据库,并将应同步的实体存储在一个数据库中,并将特定设备存储在另一个数据库中。

我不知道这两种方式中的任何一种是否可行,或者哪种方式最容易维护和/或实现。

有谁知道这是否可行以及如何实现?代码示例将不胜感激。

<小时/>

更新

我正在尝试遵循 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。

最佳答案

MagicalRecord 只是有用的辅助方法的集合,使 CoreData 更易于处理。 MagicalRecord 不是 CoreData 的包装器或替代品。这是理解无论 CoreData 能做什么,MagicalRecord 也能做什么的关键。因此,如果 CoreData 可以处理多个持久存储,那么 MagicalRecord 也可以。唯一的技巧是找到适合您需求的正确帮助方法。在本例中,该方法位于 NSPersistentStoreCoordinator 中。看一下 -addSqliteStoreNamed: 方法。这将完成您所需要的操作,而无需常规 addPersistentStore: 方法的所有额外参数(无论如何,该方法实际上在幕后使用)

关于iphone - 使用 MagicalRecord 的多个数据库或仅将部分数据库同步到 iCloud,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14069730/

相关文章:

ios - 如何对 UITableView 使用复选标记

iphone - 如何在 iphone 中以编程方式实现带有背景图像的按钮

ios - TableViewCell 为零

ios - OpenGL ES 2D 绘图性能评估

ios - 无法编辑瓷砖 map Xcode 8 GM

iphone - Objective-C : don´t lock iPhone while app is running

iphone - 如何将背景颜色设置为搜索栏的清晰颜色

iphone - iPhone SDK 是否支持 PDF 中的链接并且可以在内部路由吗?

iphone - 如何在文档中下载和保存 xml,然后如何从文档中解析 xml 文件?

iphone - 如果用户在文本字段为空时按下提交按钮,则摇动 UIAlertView