Лорд Джон Ворфин (и, я уверен, кто-то до него) сказал: «Характер - это то, что вы есть во тьме». Что ж, модель - это то, чем является приложение, когда никто не смотрит - именно данные и логика определяют, как приложение ведет себя независимо от того, как оно представлено на экране.
Представьте, что вы решили добавить интерфейс командной строки в свое приложение. Вы по-прежнему хотели бы использовать те же структуры для управления вашими данными, и ваша логика для сортировки, просеивания и вычисления на основе данных также должна быть такой же. Код в вашем приложении, который остается важным / полезным независимо от того, как пользователь видит приложение или взаимодействует с ним, является моделью.
Модель может быть очень простой и полностью состоять из стандартных объектов. Приложения для iOS часто больше ориентированы на извлечение, хранение и отображение данных, чем на сжатие чисел, поэтому весьма обычно иметь модель, которая представляет собой просто массив словарей или иерархию словарей, которая имеет несколько уровней. Если вы посмотрите на класс NSManagedObject Core Data, он во многом похож на NSMutableDictionary. Так что не бойтесь использовать стандартные объекты, если они уместны.
Тем не менее, вы, безусловно, можете также создавать свои собственные объекты модели, и это полезно, если у вас есть определенные требования, которые вы хотите применить к своим данным, или если вы хотите иметь возможность получать информацию из данных.
Начинающие часто задаются вопросом, как каждый контроллер получает доступ к модели. Некоторые люди рекомендуют использовать для этого шаблон синглтона, главным образом потому, что он предоставляет единый общий объект, доступный в глобальном масштабе. Я не рекомендую это. Вместо этого имейте в своем приложении какой-либо высокоуровневый объект, например, делегат приложения, создающий / загружающий модель (который, вероятно, будет представлять собой график множества отдельных объектов), и назначающий указатель на модель для любых контроллеров представления, которым это необходимо. Если эти контроллеры в свою очередь создают другие контроллеры представления, они могут снова предоставить указатель на модель (или ее часть) на свои дочерние контроллеры.
Надеюсь, это поможет.