NSArray count не работает - PullRequest
       2

NSArray count не работает

0 голосов
/ 22 ноября 2011

Итак, у меня есть UITableView, и я заполняю табличное представление данными из .plist. Это работало нормально для меня до сегодняшнего дня, когда я попытался сделать то же самое, и я не могу заставить работать метод numberOfRowsInSection. Вот мой код:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
     if...

     else if (segmentOptions == exchange){
         NSArray *array = [NSArray arrayWithArray:[exchangeDictionary objectForKey:[listOfExchanges objectAtIndex:section]]];
         return [array count];
     }   

   //Else
    return contentArray.count;
}

Так что в этом коде, каждый раз, когда я запускаю его, код падает. Но я использую в основном тот же код, чтобы установить текст табличного представления, и это прекрасно работает:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
     static NSString *CellIdentifier = @"Cell";

     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
     }

     if...

     else if (segmentOptions == exchange) {
           NSArray *array = [NSArray arrayWithArray:[exchangeDictionary objectForKey:[listOfExchanges objectAtIndex:indexPath.section]]];
           cell.textLabel.text =  [array objectAtIndex:indexPath.row];
     }

     return cell;
}

И этот код работает нормально, поэтому я так растерялся. Когда я устанавливаю количество строк для возврата к определенному числу и запускаю остальную часть кода, все работает нормально. Так что я действительно потерян. Заранее спасибо

UPDATE Я попробовал это с правильной нотацией count, return [array count];, и у меня все тот же сбой и тот же вывод консоли.

Ответы [ 3 ]

5 голосов
/ 22 ноября 2011

Во-первых, count не является свойством, поэтому вам не следует использовать точечный синтаксис для доступа к нему.

Я бы предложил изменить код так, чтобы вы не обращались к методу count, как свойству.

Во-вторых,

Проверьте, не равен ли ваш массив нулю и является ли он массивом.

В-третьих,

Отправьте фактическую трассировку полного стека.

2 голосов
/ 22 ноября 2011

Разбейте его и отладьте, если консольное сообщение не помогло.Иногда помогает, особенно когда поздно.т.е.

// NSArray *array = [NSArray arrayWithArray:[exchangeDictionary objectForKey:[listOfExchanges objectAtIndex:section]]];

NSLog(@"%d", section);

id objAtIndex = [listOfExchanges objectAtIndex:section];
NSLog(@"%@", listOfExchanges);
NSLog(@"%@", objAtIndex);

id objForKey = [exchangeDictionary objectForKey:objAtIndex];
NSLog(@"%@", exchangeDictionary);
NSLog(@"%@", objForKey);
0 голосов
/ 22 ноября 2011

Попробуйте это:

[array count]

count - это не свойство, это метод, который вы запускаете в массиве.

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