UISearchBars。复制数组总是等于Nil

时间:2013-12-02 09:39:37

标签: ios objective-c uitableview uisearchbar

 - (void)searchTableList {
        NSString *searchString = searchBar.text;
        NSString *str=[[stories valueForKeyPath:@"name"] componentsJoinedByString:@"@"];
        NSLog(@"desired string:%@",str);
        NSMutableArray *array = [[NSMutableArray alloc]init];
        array = [str componentsSeparatedByString:@"@"];

//永远不要尝试使用比较词典数组首先提取字符串

        for (NSString *tempStr in stories) {
            NSComparisonResult result = [tempStr compare:searchString options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchString length])];
            if (result == NSOrderedSame) {
                [filteredContentList addObject:tempStr];
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

首先,filteredContentList永远不会在上面的代码中分配,所以它总是指向nil。在filteredContentList = [NSMutableArray array]中添加viewDidLoad之类的smth。 其次,您依靠isSearching boolean标志来检测您正在处理搜索结果表视图或您控制器的常规table view。这是,恕我直言,不好的做法。 您应该依赖tableView参数,该参数将传递给表视图委托的每个方法(在您的情况下 - 您的UITableViewController)。设置标记或将tableView参数与self.tableView进行比较。 最后一件事 - 您无需在reloadData致电viewDidLoad