【问题标题】:Getting an uncaught exception while iterating through result set in iOS sqlite DB遍历 iOS sqlite DB 中的结果集时出现未捕获的异常
【发布时间】:2014-11-13 05:05:35
【问题描述】:

跟随 sn-p 给我:

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“- [__NSCFString count]: unrecognized selector sent to instance 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/

【问题讨论】:

  • 您是否在 Google 上搜索过“无法识别的选择器”???
  • 您将NSString 分配给List。这不是NSArray
  • 循环的意义何在?最后,List 将等于最后一个值。所有先前的值都被忽略。
  • 当您要在几行之后覆盖指针时,为什么要使用[[NSMutableArray alloc]init] 初始化List?
  • 不要使用以大写字符开头的变量名。首字母大写只能用于类名。

标签: ios sqlite uncaught-exception


【解决方案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"]]];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    相关资源
    最近更新 更多