Доступное для iPhone хранилище объектов - PullRequest
0 голосов
/ 17 марта 2011

В настоящее время я пишу многопользовательское социальное приложение для iPhone, которое взаимодействует с сервером.

У меня есть класс User, в котором хранятся все общие данные о каждом пользователе (имя, идентификатор и т. Д. И т. Д.).Тем не менее, где я спотыкаюсь, как лучше всего хранить этих пользователей.

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

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

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

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

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 17 марта 2011

Вы на правильном пути, вам нужен какой-то объект контроллера данных, который будет обрабатывать ваши объекты пользовательских данных от вас. Вы можете сделать этот объект одиночным, или не можете. Альтернатива состоит в том, чтобы ваш контроллер приложения (обычно делегат приложения) создавал экземпляр контроллера данных и передавал его каждому контроллеру окна или представления во время запуска. Одним из преимуществ является то, что было бы легче изменить ваше приложение, чтобы иметь несколько контроллеров данных; это не так важно для приложения для iPhone, но это может быть проблемой для настольного приложения, в котором одновременно могут быть открыты несколько окон документов. С другой стороны, синглтон, вероятно, будет проще кодировать и может предотвратить ошибки в будущем.

Возможно, вам покажутся интересными последние параграфы документации по шаблону разработки Apple MVC , в ней немного говорится о разделении ролей контроллера модели / представления контроллера.

1 голос
/ 17 марта 2011

Я бы склонялся к объекту UserStore, способному заполнять объект User из основного хранилища данных по мере необходимости, сохраняя всех ваших пользователей, включая текущего пользователя. Это база данных для Mac / iPhone, но вы можете использовать sqlite или другой магазин в других ситуациях.

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

Синглтон кажется вполне разумным, и я сделал несколько приложений, используя эту стратегию. Если вы думаете с точки зрения MVC, у вас будут представления, обращающиеся к модели (магазину), и все в порядке. Я не заинтересован в выборе шаблона ради шаблона, но Singleton - это шаблон дизайна, и в этом случае я думаю, что он правильный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...