2014-11-13 1 views
0

Следующий фрагмент кода дает мне:Получение неперехваченное исключение при переборе наборе результатов в IOS БД SQLite

Нагрузочный приложение из-за неперехваченного исключением «NSInvalidArgumentException», причина: «- [__NSCFString число]: непризнанные селектор отправленного в экземпляр 0x8ce0c00'

-(void)loadInfo{ 
    // Create the query. 
    NSString *query = [NSString stringWithFormat:@"select * from tableName where  category=\"%@\" ", @"cat1"]; 

    // Load the relevant data. 
    NSArray *results = [[NSArray alloc] initWithArray:[self.dbManager loadDataFromDB:query]]; 
    NSMutableArray *List = [[NSMutableArray alloc]init]; 

    NSLog(@"Count..:%d",results.count); 

    for(int i=0; i<results.count; i++){ 
     List = [[results objectAtIndex:i] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"itemName"]]; 
    } 
    NSLog(@"Result..:::: %d", [List count]); 
} 

Что происходит здесь не так? Cant i print List count? dbmanager - это то, что я реализовал, используя, например. приведены в - http://www.appcoda.com/sqlite-database-ios-app-tutorial/

+1

ли вы Google «непризнанный селектор» ??? –

+1

Вы присваиваете 'NSString'' List'. Это не «NSArray». – rmaddy

+0

И в чем смысл цикла? В конце концов, 'List' будет равен последнему значению. Все предыдущие значения игнорируются. – rmaddy

ответ

0

Эта операция заменяет List на каждой итерации цикла с другим объектом:

List = [[results objectAtIndex:i] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"itemName"]]; 

Судя по ошибке, объект случается NSString.

То, что вы, вероятно, хотел, чтобы добавить объекты в свой изменяемый массив List:

[List addObject:[[results objectAtIndex:i] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"itemName"]]];