Cocoa 集合的 map
、filter
、fold
和 detect
,尽可能减少冗余。
简而言之
#import "RXCollections.h"
…
[people rx_mapWithBlock:^(id each) { return [each phoneNumber]; }];
[ungulates rx_filterWithBlock:^(id each) { return [each stomachCount] == 4; }];
[stringsToConcatenate rx_foldInitialValue:@"" withBlock:^(id memo, id each) { return [memo stringByAppendingString:each]; }];
[collection rx_detectWithBlock:^(id each) { return [[each name] isEqualToString:@"Richard Feynman"]; }];
目前,RXCollections 在映射或过滤集合时会创建集合,在映射或过滤其他任何内容时会创建数组。您的集合可以通过实现 +rx_emptyMutableCollection
映射/过滤到其他类型。可以使用 …IntoCollection:
变体进行一次性映射和过滤到其他集合。
符合 NSFastEnumeration 协议的任何内容都可以遍历。这包括数组、集合、字典、枚举器和符合此协议的所有第三方类。
在 RXCollections.h
中提供了更多文档。
包含的 Xcode 目标编译了一个静态归档,但实际上没有真正需要使用它;您可以直接链接 RXCollections.m
并 #import "RXCollections.h"
。我建议使用这种方法,因为静态归档是一大麻烦。