2013-07-07 2 views
-1

У меня есть настраиваемый объект MyContact, внутри него есть два параметра: одно имя (NSString), другое - phoneArray (NSArray). Я сгенерировал массив MyContact и использовал NSPredicate с «phoneArray содержит% @» для фильтрации, я получил пустой результат, но когда я использовал «имя содержит% @» для фильтрации, я могу получить правильный результат. Я не знаю, почему. Ниже приведен мой демо-код!Пустой результат, когда фильтр по NSPredicate

@interface MyContact : NSObject 

@property (nonatomic, retain) NSString *name; 

@property (nonatomic, retain) NSArray *phoneArray; 

@end 

@autoreleasepool { 

    NSMutableArray *myContacts = [[NSMutableArray alloc] init]; 

    MyContact *contact1 = [[MyContact alloc] init]; 
    contact1.name = @"will mo"; 
    contact1.phoneArray = [NSArray arrayWithObjects:@"138761", nil]; 
    [myContacts addObject:contact1]; 
    [contact1 release]; 

    MyContact *contact2 = [[MyContact alloc] init]; 
    contact2.name = @"robert jiang"; 
    contact2.phoneArray = [NSArray arrayWithObjects:@"13554227", @"876368268", nil]; 
    [myContacts addObject:contact2]; 
    [contact2 release]; 

    MyContact *contact3 = [[MyContact alloc] init]; 
    contact3.name = @"watson song"; 
    contact3.phoneArray = [NSArray arrayWithObjects:@"73514637", @"6216738", nil]; 
    [myContacts addObject:contact3]; 
    [contact3 release]; 

    MyContact *contact4 = [[MyContact alloc] init]; 
    contact4.name = @"marco sch"; 
    contact4.phoneArray = [NSArray arrayWithObjects:@"42437845", nil]; 
    [myContacts addObject:contact4]; 
    [contact4 release]; 

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"phone contains %@", @"24"]; 
    NSArray *resultArray = [myContacts filteredArrayUsingPredicate:predicate]; 
    NSLog(@"%@", resultArray); 

    [myContacts release]; 
} 

ответ

1

"phoneArray" является массив строк. Чтобы проверить, содержит ли какой-либо из элементов массива данную строку, используйте

[NSPredicate predicateWithFormat:@"ANY phoneArray CONTAINS %@", @"24"]; 
+0

Спасибо, это работает! –

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