Проблема с источником данных для таблицы Cocoa Touch - PullRequest
0 голосов
/ 31 марта 2009

У меня проблемы с отображением результатов из источника данных. Этот код покажет другой (и правильный) результат в консоли, но приведет к всевозможным случайным хламам в симуляторе.

("results" - это свойство NSMutableArray для класса.)

-(void) handleSearchForKeywords: (NSString *) keywords {
    [results removeAllObjects];
    int r = rand() % 10;
    for( int i = 0; i < r; i++ ) {
        [results addObject:[NSString stringWithFormat:@"test %i: %@", i, keywords]];
    }
    [self reloadTheTable];
}

-(void) reloadTheTable {
    NSLog( @"current array contents: %@", results );
    [tableView reloadData];
}

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

[править в ответ на Марка Бесси - я думаю, все здесь - ваши основные методы источника данных]

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

-(UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath {
    static NSString *SearchViewControllerCell = @"SearchViewControllerCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: SearchViewControllerCell];
    if( cell == nil ) {
        cell = [[[UITableViewCell alloc] initWithFrame: CGRectZero reuseIdentifier: SearchViewControllerCell] autorelease];
        NSUInteger row = [indexPath row];
        [cell setText:[results objectAtIndex:row]];
    }
    return cell;
}

1 Ответ

1 голос
/ 31 марта 2009

Я не думаю, что проблема в коде, который вы опубликовали. Это более вероятно в коде, который реализует источник данных для вашего табличного представления.

...