我有一個NSArray,我想NSArray用滿足特定條件的原始數組中的對象創建一個新對象。條件由返回的函數決定BOOL。我可以創建一個NSMutableArray,遍歷源數組,并復制過濾器函數接受的對象,然后創建它的不可變版本。有沒有更好的辦法?
3 回答

嗶嗶one
TA貢獻1854條經驗 獲得超8個贊
有很多方法可以做到這一點,但到目前為止,最肯定的方法是使用[NSPredicate predicateWithBlock:]:
NSArray *filteredArray = [array filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id object, NSDictionary *bindings) {
return [object shouldIKeepYou]; // Return YES for each object you want in filteredArray.
}]];
我認為這簡明扼要。
迅速:
對于那些工作NSArrayS IN斯威夫特,你可能更喜歡這種更簡潔的版本:
nsArray = nsArray.filter { $0.shouldIKeepYou() }
filter僅僅是Array(NSArray隱式橋接到Swift的Array)的方法。它帶有一個參數:一個閉包,它在數組中使用一個對象并返回Bool。在關閉時,只需返回true過濾數組中所需的任何對象即可。
- 3 回答
- 0 關注
- 735 瀏覽
添加回答
舉報
0/150
提交
取消