Проблема UISearchBar в таблице, загруженной запросом SQLite - PullRequest
0 голосов
/ 02 октября 2011

Прежде всего, я новичок в этом, так что извините за любой мой самый простой вопрос.Я пытаюсь просмотреть данные и отфильтровать их, что очень распространено.Поэтому я использую разные учебники.Сначала я загрузил данные из своей базы данных SQLite,Затем я использовал пользовательские учебники для ячеек и настроил их.Но я застрял в UISearchBar.Учебник, которому я следовал, использует NSArray для заполнения таблицы, которая объявлена ​​в коде.Поскольку мои методы SQLite получают данные из базы данных в массив, я подумал, что если я скопирую этот массив в массив в методах фильтрации, это сработает.Но это не так.Вот код с пояснениями:

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    if ([searchText length] == 0) {
        [displayItems removeAllObjects];
        [displayItems addObjectsFromArray:allItems];
    } else {
        [displayItems removeAllObjects];
        for (NSString *string in allItems) {
            NSRange r = [string rangeOfString:searchText options:NSCaseInsensitiveSearch];

            if (r.location != NSNotFound) {
                [displayItems addObject:string];
            }
        }
    }

    [tableViewScreen reloadData];
}

Приведенный выше код предназначен для фильтрации, и я попытался скопировать массив, использованный для заполнения таблицы, в массив allItems следующим образом:

MyProjectAppDelegate *appDelegate = (MyProjectAppDelegate *)[[UIApplication sharedApplication] delegate];
allItems = appDelegate.mySqliteArray;

Или вот так:

allItems = [[NSArray alloc] initWithArray:appDelegate.mySqliteArray];

Но никто из них не работал.Я хотел бы снова указать на мою проблему,У меня есть метод, который получает данные в массив в классе AppDelegate, и в моем классе TableView я хочу скопировать этот массив в другой.PS mySqliteArray является изменяемым массивом, а массив allItems - нет.Кроме того, мои ячейки создаются пользовательским классом ячеек, и в каждой строке по 2 метки.

1 Ответ

0 голосов
/ 03 октября 2011

Поскольку я определял массив, в котором есть объекты, созданные моим определенным классом, я позже понял, что я ошибся в переносе объектов, но не строк.Поэтому я обновил свой код следующим образом и сумел создать необходимый массив:

for (MyClass *object in appDelegate.mySqliteArray) {
[allItems addObject:[NSString stringWithFormat:@"%@", object.objectName]];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...