Получение неперехваченного исключения при повторении набора результатов в iOS sqlite DB

следующий фрагмент дает мне:

Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «- [__NSCFString count]: нераспознанный селектор отправлен экземпляру 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]);
}

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


person Smitha    schedule 13.11.2014    source источник
comment
Вы Google непризнанный селектор???   -  person Hot Licks    schedule 13.11.2014
comment
Вы назначаете NSString на List. Это не NSArray.   -  person rmaddy    schedule 13.11.2014
comment
А в чем смысл петли? В итоге List будет равно последнему значению. Все предыдущие значения игнорируются.   -  person rmaddy    schedule 13.11.2014
comment
И зачем инициализировать List с помощью [[NSMutableArray alloc]init], если вы собираетесь перезаписать указатель несколькими строками позже?   -  person Hot Licks    schedule 13.11.2014
comment
Не используйте имена, начинающиеся с символа верхнего регистра, для имен переменных. Начальный верхний регистр следует использовать только для имен классов.   -  person Hot Licks    schedule 13.11.2014
comment
Спасибо! это верно.   -  person Smitha    schedule 13.11.2014


Ответы (1)


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

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

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

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

[List addObject:[[results objectAtIndex:i] objectAtIndex:[self.dbManager.arrColumnNames indexOfObject:@"itemName"]]];
person Sergey Kalinichenko    schedule 13.11.2014