2015-10-16 2 views
0

У меня есть NSMutableArray, который содержит большое количество пользовательских объектов QuickBlox (QBCOCustomObject).NSPredicate для массива Quickblox Пользовательские объекты

Когда мой пользователь вводит информацию о имени в текстовое поле, я хочу отфильтровать свое табличное представление, чтобы показать результаты на основе их поиска.

Вот как я хотел бы получить полное имя пользователя из пользовательского класса ...

for (QBCOCustomObject *object in self.userArray) { 
    NSString *c = [object.fields[@"fullName"]; 
    NSLog (@"%@", c); 
} 

В методе ниже я пытаюсь настроить предикат, но я изо всех сил, чтобы найти правильный формат для сказуемое. Может ли кто-нибудь помочь?

- (void)textFieldDidChange :(UITextField *)theTextField { 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(fullName CONTAINS[cd] %@)", self.searchBar.text]; 
    self.userArray = [[self.userArray filteredArrayUsingPredicate:predicate] mutableCopy]; 
    [self.tableView reloadData]; 

} 
+2

Try 'fields.fullName СОДЕРЖИТ [CD]% @' – Larme

ответ

1

Вот рабочий пример:

NSMutableArray *initialArray = [NSMutableArray array]; 

QBCOCustomObject *object1 = [QBCOCustomObject customObject]; 
object1.fields = [@{ 
    @"fullName": @"Igor", 
    @"age": @(27) 
} mutableCopy]; 
[initialArray addObject:object1]; 
// 
QBCOCustomObject *object2 = [QBCOCustomObject customObject]; 
object2.fields = [@{ 
        @"fullName": @"Bob", 
        @"age": @(27) 
        } mutableCopy]; 
[initialArray addObject:object2]; 
// 
QBCOCustomObject *object3 = [QBCOCustomObject customObject]; 
object3.fields = [@{ 
        @"fullName": @"Igorio", 
        @"age": @(27) 
        } mutableCopy]; 
[initialArray addObject:object3]; 

NSLog(@"initialArray: %@", initialArray); 

NSPredicate *bPredicate = [NSPredicate predicateWithFormat:@"fields.fullName CONTAINS 'Igor'"]; 
NSArray *filteredArray = [initialArray filteredArrayUsingPredicate:bPredicate]; 

NSLog(@"filteredArray: %@", filteredArray); 

Он возвращает «Игорь» и объекты «Igorio» и пропустить «Bob»

Вот хороший учебник о NSPredicate с большими примерами :

http://nshipster.com/nspredicate/

+0

спасибо, а также @Larme за комментарий к моему вопросу за то, что помогли мне понять это правильно –

Смежные вопросы