Пример кода, иллюстрирующий архитектуру MVC в iOS - PullRequest
4 голосов
/ 10 июня 2011

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

Один из подходов, который я мог бы использовать, это загрузить plist в массив словарей в моем viewDidLoad: и затем отобразить их.

Однако я хочу применить объектно-ориентированный метод, создав класс Person. Как мне поступить так же в этом случае? Я полагаю, что мог бы начать с создания класса «Персона» с тремя атрибутами: имя, адрес, фотография. Что дальше? Мне понадобится много экземпляров этого класса «Личность», верно? Как мне «загрузить» каждый экземпляр соответствующей записью Person из списка? Должен ли я создать другой класс, который выполняет эту «загрузку»? Люди используют класс Singleton, чтобы достичь его?

Может ли кто-нибудь поделиться примером кода, чтобы проиллюстрировать это? Или, может быть, вести меня к блогам / ресурсам, которые говорят об этом?

Ответы [ 2 ]

4 голосов
/ 10 июня 2011

Хммм, я думаю, ты немного обдумал это.Я бы просто создал класс, который бы обрабатывал мою личность, в данном случае ваш класс «Персона».

Я бы просто сохранял каждого человека, используя Базовые Данные.Затем, когда пришло время их отобразить, я просто сделал бы запрос на выборку и сохранил все управляемые человеком объекты в NSMutableArray (который просто обрабатывает массивы объектов).Затем вы можете просто использовать значение индекса, чтобы отобразить множество людей в вашем массиве в табличном представлении.

В заключение я бы:

1. For every person, create instance of Person.
2. Verify if person exists in my Core Data Person Entity.
3. If not, then insert into Core Data (the object will become an
NSManagedObject).
4. For displaying, simply do a fetch request to pull all persons in your
entity. Here I prefer to store the
results into an NSMutableArray, but
that is completely up to you. Make
sure you release your fetch request
after the results are store in the
array.
5. Reference them to your table view using the index value for each
person NSManagedObject in the array.

Для чего-то, что не требует простого хранения:

1. Create instance of Person for every entry.
2. Add Person object to array.
3. Reference each Person to table view using index value.

В конце концов, ваш подход будет продиктован тем, что вы хотите сделать с информацией.

Что касается чтения списка, я бы выбрал чтение XML длявсе, что вам нужно, это класс XML Parser (есть несколько вариантов для синтаксических анализаторов).Поскольку я ничего не делаю, кроме разбора XML, я использую NSXMLParser, но этот выбор также остается за вами.Просто создайте класс NSXMLParser (убедитесь, что различные действия, когда парсер находит данный элемент, действуют внутри этого парсера).Так что да, вам нужно будет добавить дополнения к NSXMLParser для обработки каждого элемента.Это действительно проще, чем кажется.

Кроме того, сохраняя в Core Data, вы всегда можете получить информацию, не используя Singleton.

1 голос
/ 10 июня 2011

Полагаю, вы не ищете дизайнерское решение вышеупомянутого вопроса.Если это так, то версия @A Salcedo выглядит отлично.

Если вы ищете общие руководящие указания для MVC и моделирования, сайт Мартина Фаулера предлагает некоторые из лучших (гибких) рекомендаций по дизайну / моделированию.1003 * http://www.martinfowler.com/eaaDev/uiArchs.html (на MVC) и
http://martinfowler.com/design.html (много интересных постов, связанных с дизайном).

Приятного чтения.

...