我想在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'
答案 0 :(得分:1)
您没有使用Dictionary填充arrayProductNaam。它由NSString填充。现在,在searchTableView函数中,您将这些字符串成员作为字典处理,从而解决问题。
答案 1 :(得分:0)
尝试NSLog你的String数组。所以你可以理解它存在与否
答案 2 :(得分:0)
您正试图从不是字典的字符串中获取键值。