2015-10-07 3 views
3

В моем приложении я должен поддерживать локальное постоянное хранилище в синхронизации с частной базой данных облачного набора. Поэтому я просто хотел узнать, как я могу обрабатывать изменения учетной записи, которые могут произойти.CloudKit: Как обрабатывать изменения учетной записи в локальном постоянном хранилище?

Путаница у меня есть, как показано ниже: сказать набор записей принадлежат пользователю А теперь, если в пользователь B войти на тот же телефон, я могу сделать следующее из 2-х вещей:

  1. Ignore пользователя и синхронизировать данные с учетной записью B, но при этом данные А получат синхронизацию с частной учетной записью B. Здесь тег изменения записи и все становятся немного беспорядочными, так как я сохраняю закодированные поля CKRecord в базе данных.

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

Как можно лучше всего обрабатывать, кроме двух вещей.

ответ

2

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

Вы можете обнаружить измененный логин, добавив следующий код в AppDelegate или RootViewController:

NSNotificationCenter.defaultCenter().addObserverForName(NSUbiquityIdentityDidChangeNotification, object: nil, queue: nil) { _ in 
    /// remove local data and fetch user data 
} 

Вы также должны обновить все связанные пользовательские данные в памяти и обновить загруженные виды.

+0

Спасибо edwin. В моем приложении пользователь может иметь несохраненные данные в облаке, поскольку мы предоставляем ему возможность включить/отключить синхронизацию облаков, поэтому, если мы удалим все данные при переключении учетной записи, тогда у них есть вероятность, что пользователь может потерять некоторые данные , Для других 2 вариантов i.e сохранение идентификатора пользователя в постоянном хранилище и создание отдельного постоянного хранилища, который предпочтительнее? – user3519594

+0

Отдельный постоянный магазин удобнее обслуживать. Вам нужно только переключать магазины. «Вам не нужно изменять свои данные или ваши запросы. Запросить данные для нескольких пользователей сразу было бы сложнее. –

+0

И пусть даже если мы идем для разных постоянных хранилищ, как мы обрабатываем перенос версий для нескольких постоянных хранилищ. Затем нам нужно будет перенести каждый созданный магазин. – user3519594

Смежные вопросы