NSInvalidArgumentException UITableView - PullRequest
       2

NSInvalidArgumentException UITableView

0 голосов
/ 01 февраля 2010

при нажатии кнопки «Обновить» для обновления UITableView.

   .h
    NSArray *sortedArray;
    NSMutableArray *animals;

    .m
        -(void)update{
                [self checkAndCreateDatabase];
         [self readAnimalsFromDatabase];
         [self sort];
         [self.tableView reloadData];
        }


        - (void)sort{
         NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"distance" ascending:YES] autorelease];
         NSMutableArray *sortDescriptors = [NSMutableArray arrayWithObject:sortDescriptor];
         sortedArray = [animals sortedArrayUsingDescriptors:sortDescriptors];

        }

        - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
....
//This works but it uses the animals, unsorted array. 
//If I replace it with this: Animal *myAnimal = (Animal *)[sortedArray objectAtIndex:indexPath.row];, it will give the error1.

         Animal *myAnimal = (Animal *)[animals objectAtIndex:indexPath.row];
         NSString *temp = [NSString stringWithFormat:@"%@ - %@",myAnimal.distance, myAnimal.name];
         cell.textLabel.text = temp; 
         return cell;
        }

ошибка1:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[_NSIndexPathUniqueTreeNode objectAtIndex:]: unrecognized selector sent to instance 0x3d3feb0'

Любая помощь будет отличной! благодарю вас.

1 Ответ

1 голос
/ 01 февраля 2010

Вам, вероятно, нужно сохранить массив отсортированных животных

sortedArray = [[animals sortedArrayUsingDescriptors:sortDescriptors] retain];

Подсказка в том, что ваша ошибка говорит [_NSIndexPathUniqueTreeNode objectAtIndex:], но вы ожидали, что sortedArray будет NSArray, а не _ NSIndexPathUniqueTreeNode.Это говорит о том, что объект sortedArray, на который указывает sortedArray, изменился, что, как правило, указывает на то, что он был освобожден и память используется чем-то другим.

Sam

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