У меня есть настраиваемый объект 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];
}
Спасибо, это работает! –