Запрос базовых данных с предикатами - iPhone - PullRequest
10 голосов
/ 19 июня 2009

Итак, я пытаюсь извлечь объекты из основных данных. У меня есть список, скажем, 80 объектов, и я хочу иметь возможность искать их с помощью UISearchBar. Они отображаются в таблице.

Используя яблочную документацию по предикатам, я поместил следующий код в один методов делегата UISearchBar.

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
  if (self.searchBar.text !=nil)
  {
    NSPredicate *predicate =[NSPredicate predicateWithFormat:@"name LIKE %@", self.searchBar.text];
    [fetchedResultsController.fetchRequest setPredicate:predicate];
  }
  else
  {
    NSPredicate *predicate =[NSPredicate predicateWithFormat:@"All"];
    [fetchedResultsController.fetchRequest setPredicate:predicate];
  }

  NSError *error = nil;
  if (![[self fetchedResultsController] performFetch:&error]) {
        // Handle error
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();  // Fail
    }       

  [self.tableView reloadData];

    [searchBar resignFirstResponder];   
    [_shadeView setAlpha:0.0f];
}

Если я введу в поле поиска точное совпадение со свойством name одного из этих объектов, поиск сработает, и он заполнит таблицу одной ячейкой с именем объекта. Если я не ищу точное имя, я не получаю результатов.

Есть мысли?

Ответы [ 4 ]

15 голосов
/ 19 июня 2009

Кажется, что iPhone не нравится оператор LIKE. Я заменил его на «contains [cd]», и оно работает так, как я хочу.

5 голосов
/ 17 октября 2009

use содержит [cd] вместо like и меняет:

NSPredicate *predicate =[NSPredicate predicateWithFormat:@"All"];

до:

NSPredicate *predicate =[NSPredicate predicateWithFormat:@"1=1"];

1 голос
/ 15 января 2012

В типичном приложении Core Data необходимо удалить NSF fetchedResultsController:

[NSFetchedResultsController deleteCacheWithName: [self.fetchedResultsController cacheName]];

В противном случае вы получите исключение (в идеале) или у вас будет странное поведение.

1 голос
/ 19 июня 2009

Вы пробовали использовать MATCH и регулярные выражения? Просто любопытно посмотреть, если LIKE - это то, чего следует избегать на iPhone или нет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...