target-c пустая ошибка NSArray - PullRequest
       14

target-c пустая ошибка NSArray

0 голосов
/ 15 сентября 2011

Я использую JSON для анализа данных в NSArray 'courseArray'.Затем я фильтрую эти данные с помощью NSPredicate и сохраняю их в «строки».Проблема в том, что я не знаю, как определить, пустые строки или нет.Например: если запись существует, строки будут содержать соответствующие объекты, но если запись не существует, то приложение завершает работу (также, когда я использую NSLog, чтобы увидеть содержимое массива пустым, я полагаю, что он должен сказать, что его ноль?если нет объектов).Как я могу это исправить?

if (dict)
{
    courseArray  = [[dict objectForKey:@"lab"] retain];
    NSPredicate* predicate = [NSPredicate predicateWithFormat:@"labNumber== %@",labSelected]; //filter
    rows = [[courseArray filteredArrayUsingPredicate:predicate]retain];
}

[jsonreturn release];

self.formattedTextView.opaque = NO;
self.formattedTextView.backgroundColor = [UIColor clearColor];

NSLog(@"array %@",rows);

 **NSDictionary *currentSelection = [rows objectAtIndex:0];** (app crashes at this line - [NSArray objectAtIndex:]: index 0 beyond bounds for empty array')
 NSString *labNumber = [currentSelection objectForKey:@"labNumber"];

Ответы [ 2 ]

2 голосов
/ 15 сентября 2011

-objectAtIndex: вызовет исключение, если в назначенном индексе нет объекта.Если rows пусто, не будет объекта с индексом 0, следовательно, исключение.Поскольку вы не поймаете исключение, в результате ваше приложение будет остановлено.

Возможно, вы захотите сравнить [rows count] с 0, чтобы убедиться, что в нем что-то есть, и соответственно отреагировать, если нет.

1 голос
/ 15 сентября 2011

Попробуйте if([courseArray count] > 0) и еще один метод, который может вам помочь:

[courseArray containsObject:(id)]

...