В настоящее время я синхронизирую весь свой хранилище основных данных с iCloud, чтобы одни и те же данные были доступны на всех устройствах iOS для пользователей. Все это настроено с помощью MagicalRecord , выполнив следующие действия:
[MagicalRecord setupCoreDataStackWithiCloudContainer:@"xxxxxxx.com.mydomain.MyAppName" localStoreNamed:@"MyAppName"];
Тем не менее, я хотел бы сохранить некоторые объекты определенного устройства в базе данных. Он в основном используется для кэширования информации, полученной из Интернета, и я не хочу, чтобы это занимало место на учетной записи пользователей iCloud.
Я считаю, что было бы два способа сделать это:
- Выберите, какие таблицы базы данных должны быть синхронизированы и игнорировать таблицы, используемые для объектов, специфичных для устройства.
- Попросите MagicalRecord управлять несколькими базами данных и хранить объекты, которые должны быть синхронизированы в одной базе данных, а другое устройство - в другом.
Я не знаю, возможен ли какой-либо из этих двух способов или который будет проще всего поддерживать и/или реализовывать.
Кто-нибудь знает, возможно ли это и как это можно сделать? Приветствуется пример кода.
<Сильный> UPDATE
I am trying to follow the approach proposed by casademora in the answer below but when doing so both of my stores end up beign synced to iCloud. I have added the following in 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.