2014-12-16 8 views
1

У меня есть массив, содержащий объекты MyCustomObject.Фильтр массива пользовательских объектов со свойством словаря

MyCustomObject имеет 3 свойства:

NSString *id; 
NSString *name; 
NSDictionary *phones; 

Как отфильтровать этот массив по содержанию имущества «телефонов»?

Все, что я видел в Интернете является:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"phones CONTAINS[c] %@",textField.text]; 
self.filteredArray = [self.unfilteredArray filteredArrayUsingPredicate:predicate]; 

Но это не поможет мне много ...

Благодаря

+0

Пожалуйста, вы можете сказать, что 'телефоны' является объектом словаря или объектом «NSString»? как вы упомянули выше, это словарь. Я сомневаюсь, что это –

ответ

5
MyCustomObject *value = [[MyCustomObject alloc] init]; 
for(value in arrayname) 
{ 
    NSString *str = [value.phones objectForKey:@"key"]; 
    NSRange r = [str rangeOfString:textField.text options:NSCaseInsensitiveSearch]; 
    if(r.location != NSNotFound) 
    { 
     NSLog(@"Match found"); 
    } 
} 
0
self.filterArray = [self.unfilteredArray filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) { 
     MyCustomObject *obj = (MyCustomObject*)evaluatedObject; 
     return ([[[obj.phones objectForKey:@"key"] lowercaseString] rangeOfString:[textField.text lowercaseString]].location != NSNotFound); 

    }]]; 
+0

. Я действительно просматриваю все значения словаря, чтобы увидеть, есть ли значение. Если вы покажете мне, как вы это сделаете, я буду рад оценить вас. Благодаря! –

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