Obj - C: возникли проблемы при создании UITableView, который обновляет ячейки из HTTP API в режиме реального времени (по одному за раз) - PullRequest
0 голосов
/ 13 июня 2009

Я опрашиваю HTTP API - он возвращает по одному элементу за раз в режиме реального времени (примерно каждые 4 секунды). Поскольку каждый элемент получен, я хотел бы заполнить новую ячейку UITableView. Полный список полученных элементов должен оставаться в свойстве класса, я полагаю, NSMutableArray. Каков наилучший способ инициализировать NSMutableArray как свойство класса, обновлять его по мере поступления новой информации, а затем использовать счетчик для обновления нового UITableViewCell? Вот как я добавляю контент в NSMutableDictionary:

NSMutableDictionary *messageContents = [[NSMutableDictionary alloc] init];
[messageContents retain];
[messageContents setValue:messageText forKey:@"text"];
[messageContents setValue:image forKey:@"image"];
[self addMessageToDataArray:messageContents];

Вот метод, который вставляет объекты в массив:

- (void)addMessageToDataArray:(NSArray *)messageDictionary {
    [self.messageDataArray addObject:messageDictionary];
    NSLog(@"count = %@", [self.messageDataArray count]);
    [self reloadTableData];
}

В этот момент вызов счетчика для свойства класса messageDataArray приводит к сбою приложения. Я очень привык работать с массивами в Actionscript, Obj-C, очевидно, совершенно другой. Пожалуйста, объясните метод создания экземпляра NSMutableArray как свойства класса, заполнив его NSMutableDictionary, а затем найдите счетчик NSMutableArray (который будет динамически обновляться в режиме реального времени), чтобы я мог использовать эту информацию для обновления UITableView (на лету).

Или ... скажи мне, что я глуп, и предложи гораздо более простое решение.

1 Ответ

0 голосов
/ 13 июня 2009

Из вашего описания я бы предположил, что вы не выделяете messageDataArray перед его использованием.

Функция init для вашего класса табличного представления (контроллера?) Должна иметь такую ​​строку

messageDataArray = [[NSMutableArray alloc] initWithCapacity:20];

Также стоит проверить, что у вас есть [messageDataArray release]; в вашем методе dealloc.

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