我有一个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 关注
- 690 浏览
添加回答
举报
0/150
提交
取消