2014-09-20 4 views
0

В моем приложении Swift есть два класса, с которыми я взаимодействую почти в 75% приложения. Один из них - это набор настроек, называемых UserSettings, а другой - Job. Они оба хранятся в sqllite.Часто посещаемые объекты/классы

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

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

  1. постоянно чтение/записи в базу данных, или
  2. сделать какое-то одноплодный доступ в течение всего приложения.

Я не уверен, насколько Swift меняет что-либо с точки зрения получения ответа на этот вопрос, но я хотел обратиться за помощью к переполнению стека. Как установить объект, доступ к которому я могу получить во всем приложении? Или это не идеально, и вместо этого мне нужно каждый раз получать его из моего db?

Большое спасибо.

ответ

0

Я рекомендую вам ознакомиться с работой основных данных, я знаю, что вы управляете своим собственным магазином, но архитектура работает нормально. В качестве сводки вы можете создать «контекстный объект» (это может быть ваш синглтон), который взаимодействует с вашим хранилищем (sqlite), создающим управляемые объекты, вы будете работать с этими объектами, которые связаны с «объектом контекста», и когда когда-либо вы необходимо сохранить изменения, вы запрашиваете «объект контекста» для записи всех управляемых объектов в хранилище.

Ваши управляемые объекты должны быть только копией объектов «объект контекста», поэтому, когда вы запрашиваете «сохранение» данных в «объект контекста», вы копируете только эти управляемые объекты. Это поможет сохранить многопоточное кодирование. (Ваш объект контекста должен работать в сериализованной очереди).

Снова это всего лишь сводка, вы должны прочитать, как работают основные данные, чтобы получить лучшую картину.

Edit:

Читать этот блог: http://www.objc.io/issue-4/core-data-overview.html Разница заключается в том, что вам нужно всего лишь один магазин и один объект контекста.

+0

Могу ли я также использовать NSUserDefaults? В основном я часто перечитываю значения. – NullHypothesis

+0

NSUserDefaults - это только менеджер файла plist. Если ваши данные уже хранятся в sqlite db, почему вы хотите их сохранить? Это будет очень медленно, потому что вы будете читать файл для записи в другом. –

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