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