Центральный источник данных для всех моих контроллеров представления - PullRequest
2 голосов
/ 09 августа 2011

Итак, у меня есть приложение с кучей (примерно 25+) контроллеров представления.И эти видеомагнитофоны используют много данных, большинство из которых я мог бы либо хранить локально в приложении, либо хранить на моем сервере.Я бы предпочел хранить эти данные на своем сервере, чтобы минимизировать размер приложения, поэтому для этого я где-то читал, что для этого лучше всего иметь класс данных, который будет специальным классом, который получает все данные изИнтернет в одно время в одном месте, а не просто получать индивидуальные данные по мере необходимости, например viewDidLoad или где-то в этом роде.Поэтому мой вопрос заключается в том, действительно ли лучше создать центральный источник данных в моем приложении, и каждый класс извлекает из него данные.И если да, не могли бы вы привести пример того, как я должен настроить этот класс.Например, как заставить его работать в фоновом режиме (я думаю, что другой поток) и как передавать NSDictionarys и NSArrays и т. Д. Из источника данных в отдельный класс по мере необходимости.Заранее спасибо.Я могу уточнить, если это необходимо.

Ответы [ 2 ]

1 голос
/ 10 августа 2011

Исходя из ваших ответов в комментариях, я бы порекомендовал это решение:

  1. Перенос данных с вашего сервера на устройство - после загрузки ваши данные с вашего сервера, сохраните их в базе данных SQLite в устройство.
  2. Доступ к вашим данным из ваших многочисленных контроллеров представления - Используйте Core Data чтобы получить доступ к загруженным данным в вашей базе данных с любого вашего взгляда контроллеры.

Если вы мало знаете о программировании баз данных, Core Data - это простой способ начать. Он инкапсулирует ваши таблицы в классы, к которым вы обращаетесь, как простые классы Objective-C, так что вам не нужно изучать SQL. Вы также можете вызывать их с любого из всех ваших контроллеров представления, когда вам это нужно, поэтому вам не нужно создавать специальный класс для обработки ваших данных. Это также лучше с точки зрения производительности и чистоты дизайна, чем передача данных через иерархию контроллера представления. См. Руководство здесь .

1 голос
/ 10 августа 2011

Вы говорите о двух разных темах:

  1. Доступ к данным из основного источника со всех контроллеров представления.
  2. Доступ к данным с сервера.

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

Для решения второго вопроса вам также следует создать класс, который будет выполнять операторы SQLite и получать информацию из базы данных. Вы должны использовать SQLite для этого, и если вам это не понравится, вы можете попробовать использовать Core Data, хотя SQLite, на мой взгляд, намного проще. Этот урок описывает, как это сделать.

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

В конце концов, вы можете попытаться выполнить такие задачи в разных потоках. Вы должны попытаться сделать это, используя объекты NSOperationQueue - они сделают большую часть работы за вас. Я предлагаю прочитать о них в документации для разработчиков , предоставленной Apple, чтобы понять, как это работает.

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