Я прорабатываю здесь руководство (изучение Swift) для своего первого приложения: http://www.appcoda.com/search-bar-tutorial-ios7/
Я застрял в этой части (код Objective-C):
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];
searchResults = [recipes filteredArrayUsingPredicate:resultPredicate];
}
Кто-нибудь может посоветовать, как создать эквивалент NSPredicate в Swift?
searchResults = recipes.filter { resultPredicate.evaluateWithObject($0) }
Работаем с предикатом довольно долго. Вот мой вывод (SWIFT)
источник
LIKE 'a%z'
?Пример использования в Swift 2.0
Вы получите (детская площадка)
источник
Вы можете использовать фильтры, доступные в Swift, для фильтрации содержимого из массива вместо использования предиката, как в Objective-C.
Пример в Swift 4.0 выглядит следующим образом:
В приведенном выше примере, поскольку каждый элемент в массиве представляет собой строку, вы можете использовать этот
contains
метод для фильтрации массива.Если массив содержит настраиваемые объекты, то свойства этого объекта можно использовать для аналогичной фильтрации элементов.
источник
Используйте приведенный ниже код:
источник
Я думаю, что это был бы лучший способ сделать это в Swift:
источник
Sequence
, но есть случаи, когда вам понадобитсяNSPredicate
, например, при работе сNSFetchedResultsController
.В быстрой версии 2.2
В быстрой версии 3.0
источник
// изменить "имя" и "значение" в соответствии с данными вашего массива.
// Измените имя yourDataArrayName в соответствии с вашим массивом (NSArray).
источник