Мне нужно хранить свои данные отдельно в разных магазинах (профилях пользователей). Каков наилучший способ достичь этого? Я буду играть с Persistent Object Stores во время выполнения. Должен ли я просто remove() текущий и addPersistentStore(), чтобы создать новый или использовать ранний созданный экземпляр.Несколько постоянных хранилищ
ответ
У меня будет один основной стек данных (с использованием NSPersistentContainer
) для управления пользователями. Этот стек будет содержать основные данные учетной записи и имя файла sql. (Храните только имя файла sql НЕ полный путь к URL, поскольку путь может измениться в редких случаях, таких как восстановление iTunes). Это будет использоваться для входа в систему или для выбора учетной записи.
Затем я установил второй стек данных ядра, используя имя файла sql, которое было сохранено в объекте учетной записи пользователя. Это будет основной стек, используемый приложением. Если вам нужно выйти из системы, то слейте второй стек и начните заново. Удаление и добавление хранилища - плохая идея, так как это не касается кэша строк или других управляемых объектов, которые плавают вокруг.
Или вы можете просто иметь один основной стек данных и управлять отношениями, чтобы каждый объект принадлежал объекту пользователя. Затем вы сможете управлять своими выборками только для просмотра объектов, принадлежащих правильному пользователю.