你可以將它寫入您的謂詞,例如,讓我們假設你有一個對象有一種方法叫isOdd
並要過濾您的陣列只包含了isOdd
返回true的對象,你可以這樣做:
#import <Foundation/Foundation.h>
@interface barfoo : NSObject
{
int number;
}
- (BOOL)isOdd;
- (id)initWithNumber:(int)number;
@end
@implementation barfoo
- (NSString *)description
{
return [NSString stringWithFormat:@"%i", number];
}
- (BOOL)isOdd
{
return (number % 2);
}
- (id)initWithNumber:(int)tnumber
{
if((self = [super init]))
{
number = tnumber;
}
return self;
}
@end
int main(int argc, char *argv[]) {
@autoreleasepool {
NSMutableArray *array = [NSMutableArray array];
for(int i=0; i<10; i++)
{
barfoo *foo = [[barfoo alloc] initWithNumber:i];
[array addObject:[foo autorelease]];
}
NSLog(@"%@", array); // prints 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"isOdd == true"]; // This is oure predicate. isOdd must be true for objects to pass
NSArray *result = [array filteredArrayUsingPredicate:predicate];
NSLog(@"%@", result);
}
}
當然,這也適用周圍的其他方法,你的斷言還可以閱讀isOdd == false
或者你可以添加更多的對象要求通過。例如。您可以在NSPredicate
文檔中閱讀有關NSPredicate
語法的更多信息。