Программирование на iphone: создание приложения в стиле MVC для правильного анализа JSON? - PullRequest
0 голосов
/ 21 июля 2010

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

Я также пытаюсь использовать Model-View-Controller(MVC) архитектура для моего проекта.

Мой вопрос состоит из 2 частей:

1) Как мне структурировать различные файлы в соответствии с этим стандартом (MVC)?

2) (более общий) Я рассмотрел множество примеров разбора XML, и они, кажется, реализуют стандартные методы, такие как 'requestDidFinishLoad', 'setActiveProperty' и т. Д ... Как я могу точно узнать, какие методынужно реализовать, чтобы успешно отправить запрос и разобрать строку JSON?

Ответы [ 2 ]

3 голосов
/ 22 июля 2010

Ваша модель для табличного представления, скорее всего, будет экземпляром NSArray или NSDictionary.Массив проще в демонстрационных целях.

json-framework в Google Code позволит вам очень легко перетащить массив JSON в NSArray.

В качестве примера, скажем, у вашего контроллера табличного представления есть сохраненное свойство NSArray с именем items.

Тогда объект JSON здесь:

{
    "items" : [
        "item1",
        "item2", 
        ...
        "itemN"
    ]
} 

Может быть слит в массивследует:

SBJSON *jsonParser = [[SBJSON alloc] init];
NSDictionary *jsonDictionary = (NSDictionary *) [jsonParser objectWithString:jsonString error:nil];
self.items = (NSArray *) [jsonDictionary objectForKey:@"items"];
[jsonParser release];

Ваш делегат источника данных табличного представления просто извлекает объекты из массива items, например:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [items count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    // instantiate or dequeue cell...

    // label cells with JSON item names
    cell.textLabel.text = [items objectAtIndex:indexPath.row];
}
0 голосов
/ 21 июля 2010

У Apple есть отличная документация по MVC. Смотрите эту ссылку .

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

В вашем случае, если вы просто анализируете и отображаете JSON и вам не нужно сохранять или редактировать информацию, вы можете вырезать модель и выполнить всю работу в контроллере. Просто создайте подкласс UITableViewController, который анализирует JSON в массив и использует массив в качестве источника данных для табличного представления. Если для вас важно постоянное хранение данных, вам нужно взглянуть на что-то вроде списков или CoreData.

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