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

我有一个NSArray,我想NSArray用满足特定条件的原始数组中的对象创建一个新对象。条件由返回的函数决定BOOL

我可以创建一个NSMutableArray,遍历源数组,并复制过滤器函数接受的对象,然后创建它的不可变版本。

有没有更好的办法?


Cats萌萌
浏览 649回答 3
3回答

哔哔one

有很多方法可以做到这一点,但到目前为止,最肯定的方法是使用[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过滤数组中所需的任何对象即可。
打开App,查看更多内容
随时随地看视频慕课网APP