Ансамбли с каталогами в CloudKit

Я использую ансамбли в этом проекте, где у меня есть разные группы пользователей, хранящиеся в отдельных каталогах. Я создал это более или менее копируя пример приложения, диспетчера синхронизации Idiomatic.

Инициализация CDECloudFileSystem я делаю так:

  newSystem = [[CDECloudKitFileSystem alloc] initWithUbiquityContainerIdentifier:[CKContainer defaultContainer].containerIdentifier
rootDirectory:directoryString usePublicDatabase:YES];

Где directoryString — это глобальный идентификатор текущей группы пользователей.

Теперь я хотел бы иметь возможность переключаться между группами, позволяя пользователям иметь данные своей группы только локально на устройстве.

Моя идея, как решить эту проблему, состоит в том, чтобы изменить группу пользователей, выбрав ее из табличного представления (набор записей CKRecords с именем группы и глобальным идентификатором, соответствующим объектам Ensembles/Core Data), удалить старые данные, если пользователь войти в другую группу, а затем получить данные выбранной группы.

Будет ли работать этот метод, будут ли старые данные удалены локально на делече или есть более эффективные способы сделать это?


person Mathias Åberg    schedule 25.02.2015    source источник


Ответы (1)


Я думаю, твой план звучит нормально. Основная проблема будет заключаться в том, как вы собираетесь управлять тем, как пользователь присоединяется к определенной группе.

Также обратите внимание, что общедоступная БД является полностью общедоступной. Что может быть интересно, так это то, что теперь есть возможность шифрования данных с помощью пароля. Его только что добавили на гитхаб. Вы можете использовать пароль, чтобы скрыть данные каждой группы.

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

Вы также должны проверить параметры пиявки. Есть один, который предполагает, что все данные находятся в облаке, и он должен быть более эффективным для вашего случая.

person Drew McCormack    schedule 25.02.2015
comment
Спасибо, я столкнулся с какой-то странной ошибкой, когда удалил постоянное хранилище. Может быть, альтернативным решением может быть просто циклический просмотр объектов, удаление всех данных, затем инициализация менеджера и извлечение данных из нового каталога? Я обязательно проверю вариант шифрования. - person Mathias Åberg; 26.02.2015
comment
и кстати, спасибо за отличный фреймворк. Процесс интеграции Ensembles в мой существующий проект не мог быть проще, и это было именно то, что я искал. - person Mathias Åberg; 26.02.2015
comment
Удаление всех данных также будет работать. Удалить магазин может быть сложно. Вам нужно удалить его из PSC перед удалением файлов. Обратите внимание, что это аннулирует все MO, поэтому вы должны убедиться, что ваш пользовательский интерфейс обновляет или не имеет доступа к объектам. - person Drew McCormack; 27.02.2015