为了账号安全,请及时绑定邮箱和手机立即绑定

将NSArray过滤到Objective-C中的新NSArray中

将NSArray过滤到Objective-C中的新NSArray中

Cats萌萌 2019-11-28 10:30:20
我有一个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过滤数组中所需的任何对象即可。


查看完整回答
反对 回复 2019-11-28
  • 3 回答
  • 0 关注
  • 690 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信