Несколько баз данных с MagicalRecord или синхронизация только части базы данных для iCloud

В настоящее время я синхронизирую весь свой хранилище основных данных с iCloud, чтобы одни и те же данные были доступны на всех устройствах iOS для пользователей. Все это настроено с помощью MagicalRecord , выполнив следующие действия:

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

Тем не менее, я хотел бы сохранить некоторые объекты определенного устройства в базе данных. Он в основном используется для кэширования информации, полученной из Интернета, и я не хочу, чтобы это занимало место на учетной записи пользователей iCloud.

Я считаю, что было бы два способа сделать это:

  1. Выберите, какие таблицы базы данных должны быть синхронизированы и игнорировать таблицы, используемые для объектов, специфичных для устройства.
  2. Попросите 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.

3
nl ja de
Сколько данных зависит от устройства? Это может быть больше проблем, чем стоит попытаться синхронизировать некоторые данные, а не все это?
добавлено автор Stephen Darlington, источник
Я это рассмотрел. Специфические для устройства данные означают как «кеш» для данных, загружаемых из веб-службы. Когда устройство запускается, я хочу отображать эту информацию при загрузке данных из Интернета, чтобы пользователь не мешал использовать приложение во время загрузки. Кроме того, это используется для автономных возможностей. Это может быть много информации, но, вероятно, это не так уж плохо. Честно говоря, у меня пока нет оценки количества данных, и именно поэтому я искал более идеальное решение. Однако я мог бы просто синхронизировать все это.
добавлено автор simonbs, источник

1 ответы

MagicalRecord - это всего лишь набор полезных вспомогательных методов, которые упрощают работу с CoreData. MagicalRecord не является оболочкой или заменой CoreData. Это ключ к пониманию того, что независимо от того, что может сделать CoreData, MagicalRecord может это сделать. Итак, если CoreData может обрабатывать несколько постоянных хранилищ, MagicalRecord также может. Единственный трюк - найти подходящий вспомогательный метод, который бы соответствовал вашим потребностям. В этом случае этот метод находится в NSPsistentStoreCoordinator. Взгляните на метод -addSqliteStoreNamed:. Это сделает то, что вам нужно, без всех дополнительных параметров обычного метода addPersistentStore: (который фактически используется под обложками)

2
добавлено
Я рад, что это возможно. Я попытался заставить это работать, но по какой-то причине оба моих магазина в конечном итоге синхронизируются с iCloud. Не могли бы вы взглянуть на мой подход, чтобы узнать, знаете ли вы, что не так? Я обновил исходный вопрос, чтобы показать свой код.
добавлено автор simonbs, источник
В идеале сами категории имеют переменные экземпляра, которые устанавливаются во время инициализации основного потока данных, следовательно, это больше, чем методы.
добавлено автор Ravi Dalmia, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

iOS Developers — русскоговорящее сообщество
iOS Developers — русскоговорящее сообщество
2 400 участник(ов)

Общаемся на темы, посвященным iOS-разработке, Swift, Objective-C, SDK, Rx, Cocoa и т.д.