搜索自定义的uitableviewCell

时间:2012-02-02 12:42:35

标签: objective-c uitableview uisearchbar

我想在tableview中进行搜索。但在此表视图中,我使用自定义tableview Cell。所以对于数据部分。我在视图中选择了一个类别。然后在下一个视图中,我获得了此类别中的所有产品。 我按照教程并实现了所有方法。

这是我获取产品的功能。

-(void) fillArrayProducts:(NSString *)cat{
    NSMutableString *postString = [NSMutableString stringWithString:kGETProducts];
    [postString appendString:[NSString stringWithFormat:@"?%@=%@",@"Pro_cat",cat]];
    [postString setString:[postString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

    NSMutableURLRequest *request= [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:postString]];
    [request setHTTPMethod:@"POST"];

    postConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];

    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:postString]];

    NSError *error;

    json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

   arrayProducts = [[NSMutableArray alloc] init];
   copyArrayProducts = [[NSMutableArray alloc] init];
    arrayProductNaam = [[NSMutableArray alloc] init];
    for (int i=0; i<[json count]; i++) {
        arrayProduct = [[NSMutableArray alloc] init];
        [arrayProduct addObject:[json objectAtIndex:i]];

        [arrayProducts addObject:arrayProduct];
        [arrayProductNaam addObject:[[[arrayProducts valueForKey:@"Pro_naam"] objectAtIndex:i]objectAtIndex:0]];
        [copyArrayProducts addObject:arrayProduct];
    } 
    NSDictionary *productsDict = [NSDictionary dictionaryWithObject:arrayProductNaam forKey:@"Products"];
    NSLog(@"%@",arrayProductNaam);

}

不,我在做什么。我在这个数组中有一个'arrayProducts'数组,我把数组放在'arrayProduct'中。在arrayProduct中,您可以找到Pro_id,Pro_naam,Pro_prijs。但我只想搜索Pro_naam。所以我也填充了一个只包含产品名称的数组(arrayProductNaam)。

所以这是我搜索的部分。

- (void) searchTableView {

    NSString *searchText = searchbar.text;
    NSMutableArray *searchArray = [[NSMutableArray alloc] init];

    for (NSDictionary *dictionary in arrayProductNaam)
    {
        NSArray *array = [dictionary objectForKey:@"Pro_naam"];
        [searchArray addObjectsFromArray:array];
    }

    for (NSString *sTemp in searchArray)
    {
        NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];

        if (titleResultsRange.length > 0)
            [copyArrayProducts addObject:sTemp];
    }
}

我认为我在这里得到了这个错误。

  

2012-02-02 13:22:40.958 MamzelBestelling2 [23727:f803] - [__ NSCFString   objectForKey:]:无法识别的选择器发送到实例0x6c34780   2012-02-02 13:22:40.959 MamzelBestelling2 [23727:f803] ***终止   应用程序由于未捕获的异常'NSInvalidArgumentException',原因:   ' - [__ NSCFString objectForKey:]:发送到实例的无法识别的选择器   0x6c34780'

3 个答案:

答案 0 :(得分:1)

您没有使用Dictionary填充arrayProductNaam。它由NSString填充。现在,在searchTableView函数中,您将这些字符串成员作为字典处理,从而解决问题。

答案 1 :(得分:0)

尝试NSLog你的String数组。所以你可以理解它存在与否

答案 2 :(得分:0)

您正试图从不是字典的字符串中获取键值。