Поиск пользовательского tableviewCell - PullRequest
0 голосов
/ 02 февраля 2012

Я хочу сделать поиск в виде таблицы. Но в этом табличном представлении я работаю с настраиваемой ячейкой табличного представления. Так что для части данных. Я выбираю в виду категорию. Затем в следующем представлении я получаю все продукты в этой категории. Я следовал за учебником и реализовал все методы.

Это моя функция для получения продуктов.

-(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'. В массиве Product вы можете найти 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 ]

1 голос
/ 03 февраля 2012

Вы не заполняете массив ProductNaam словарем.Его заполнено NSString.Теперь в функции searchTableView вы обрабатываете эти строковые элементы как словари, и, следовательно, проблема.

0 голосов
/ 03 февраля 2012

вы пытаетесь получить keyValue из строки, а не из словаря.

0 голосов
/ 02 февраля 2012

попробуйте NSLog ваш String Array.так что вы можете понять, существует она или нет

...