2010-11-12 62 views
0

我一直在玩我的应用程序表视图的搜索设施一段时间,现在试图让它工作,但我不断在我的控制台中得到相同的错误。TableView UISearchBar标签栏控制器搜索时崩溃

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: ' [NSCFDictionary rangeOfString:options:]: unrecognized selector sent to instance

我认为,这下面的部分可能是我曾尝试通过if语句里面的一些NSLog的条目的问题,它似乎通过它来获取,但问题是,当我点击搜索栏和起点上打字时,我输入的第一个字母会调用错误并取消我的应用程序。

这里是哪里出了问题

在View会出现 “粮食” 数组初始化如下:在遇到错误

NSString *myDBnew [email protected]"/Users/taxsmart/Documents/rw3app.sql"; 

database = [[Sqlite alloc] init]; 

[database open:myDBnew]; 

NSString *quer = [NSString stringWithFormat:@"Select category from foodcat"]; 

Food = [database executeQuery:quer]; 

//[database executeNonQuery:quer]; 

[database close]; 

搜索栏的委托方法:

(void) searchTableView 

{ 

    NSString *searchText = searchBar.text; 

    NSMutableArray *searchArray = [[NSMutableArray alloc] init]; 

// [searchArray addObjectsFromArray:Food]; 

    for(NSDictionary *dictionary in Food) 
    { 
     NSString temp1 = [dictionary objectForKey:@"category"]; 
     [searchArray addObject:temp1]; 
    } 

    for (NSString *sTemp in searchArray) 

    { 

       NSLog(@"Value: %@",NSStringFromClass([sTemp class])); 

     NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch]; 

      if (titleResultsRange.length > 0) 

       [copyListOfItems addObject:sTemp]; 
    } 

     [searchArray release]; 

     searchArray = nil; 
} 

我该怎么办?

请帮忙。

请推荐

感谢

+0

请修复您的代码格式,很难阅读。 – raidfive 2010-11-13 03:48:36

+0

我已经完成格式化。所以请建议一些东西 – 2010-11-13 06:47:40

回答

0

看起来,数据库查询(食品)的结果是包含字典的字典。此代码:

for(NSDictionary *dictionary in Food) 
{ 
    NSString temp1 = [dictionary objectForKey:@"category"]; 
    [searchArray addObject:temp1]; 
} 

可以替换为:

for(NSDictionary *dictionary in Food) 
{ 
    NSObject *ob = [dictionary objectForKey:@"category"]; 
    if([ob isKindOfClass: [NSString class]]) 
    { 
     [searchArray addObject:ob]; 
    } 
    else if([ob isKindOfClass: [NSDictionary class]]) 
    { 
     NSDictonary *dic1 = (NSDictionary*)ob; 
     // ... at this point you can get the string for desired dictionary key 
     // or you can ignore it 
    } 
} 

有了这个代码,我们可以肯定,只有字符串被投入searchArray。

如果你想为所需的键“类别”进行完整的树分析,那么你应该做一些递归函数来搜索字典。

您可以将Food变量转储到控制台以查看实际上哪个叶是您正在查找的结果。把断点和控制台类型“宝食物”。

0

看来,有一个在您dataArray中的一个NSDictionary。 添加一个

NSLog(@"%@",NSStringFromClass([description class]])); 

查看您的dataArray包含哪些类。

+0

它只显示一个条目是NSCFDictionary我应该怎么做? – 2010-11-12 13:09:38

+0

你可以发布dataArray初始化的代码吗? – MathieuF 2010-11-12 15:00:36

+0

我编辑了我的问题,并将有关数组初始化的代码放在问题本身中。这里的一个变化是“dataArray”是“searchArray”,“description”是“sTemp” – 2010-11-13 03:21:24

相关问题