有很多種方式都可以實現(xiàn),但目前最簡潔的方式一定是使用 [NSPredicate predicateWithBlock:]
:
NSArray *filteredArray = [array filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id object, NSDictionary *bindings) {
return [object shouldIKeepYou]; // 要保留就返回 YES阴挣。
}]];
相當簡明扼要。
Swift
對于在 Swift 中使用 NSArray
的人,你會喜歡這個還要更加簡潔的版本:
nsArray = nsArray.filter { $0.shouldIKeepYou() }
filter
只是 Array
的一個方法(NSArray
被隱式橋接到 Swift 的 Array
)。只要一個參數(shù):帶有數(shù)組中某個對象的閉包卸察,返回 Bool
型。在閉包中想保留就返回 true
铅祸。