2013-08-19 3 views
1

Я разрабатываю приложение, которое имеет функцию «работа в автономном режиме». Когда эта функция активирована, данные из внешней базы данных синхронизируются с базой данных Core Data на устройстве. Проблема, с которой я сталкиваюсь, касается нескольких пользователей.Несколько экземпляров ядра данных

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

Я также предлагаю альтернативные предложения!

ответ

2

Да, Крис, вы можете сделать это в каком-то смысле, это один, что я сделал в одном из моих приложений, и я рекомендую:

  • При создании NSPersistentStore, убедитесь, что имя файла зависит от идентификатор пользователя или имя пользователя. Подождите, чтобы получить идентификатор пользователя с вашего сервера, чтобы его создать. Если приложение находится в отключенном состоянии, не вызывайте NSPersistentStore, но на всякий случай возвращайте nil, если текущий идентификатор пользователя не существует;

  • Каждый раз, когда пользователь входит в систему, инициируйте NSManagedObjectContext на основе NSPersistentStore выше;

  • Каждый раз, когда пользователь выходит из системы, убедитесь, что установлены в nil всех стек ядра данных (NSManagedObjectContext, NSPersistentStore и NSManagedObjectModel), поэтому все NSManagedObjects удаляются из памяти.

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

+0

Отлично выглядит! Могу ли я создать NSPersistentStore программно при входе в систему или мне нужно знать идентификатор пользователя заранее? – chriskievit

+0

Проверьте изменения в первой части. Пожалуйста, примите ответ и/или повысьте, если это поможет и решит вашу проблему. –