提供类似于 Ruby 和 LINQ 的类别在 NSArray 上。已经过全面测试和文档化。
欢迎贡献。需要未被实现的功能?发送拉取请求!
使用 Collector,您可以得到 -ct_map:
、-ct_reduce:
以及其他类似 Ruby 的方法,这可以减少对大量数组操作模板代码的需求。使用 -ct_distinct
消除重复项,使用 -ct_objectsInRange:
获取指定范围内的对象,使用 -ct_all:
、-ct_any:
和 -ct_none:
检查您的数组中的所有对象是否通过给定的测试,等等。
一些与 NSNumber
数组一起使用的良好扩展:-ct_min
、-ct_max
、-ct_sum
以及更多。
快速而简单的排序。
注意:以下声明可能与 Collector 实际提供的 API 不完全一致,此处显示仅供参考,以便您可以了解库的感觉。
- (NSArray *)ct_arrayByRemovingObject:(id)object;
- (NSArray *)ct_arrayByRemovingObjectsInArray:(NSArray *)array;
- (id)ct_first:(CollectorConditionBlock)condition;
- (id)ct_first:(CollectorConditionBlock)condition orDefault:(id)defaultObject;
- (id)ct_last:(CollectorConditionBlock)condition;
- (id)ct_last:(CollectorConditionBlock)condition orDefault:(id)defaultObject;
- (NSArray *)ct_where:(CollectorConditionBlock)condition;
- (NSArray *)ct_map:(CollectorValueBlock)valueBlock;
- (id)ct_reduce:(id(^)(id cumulated, id object))reducingBlock;
- (id)ct_reduceWithSeed:(id)seed block:(id(^)(id cumulated, id object))reducingBlock;
- (void)ct_each:(CollectorOperationBlock)operation;
- (void)ct_eachWithIndex:(void(^)(id object, NSUInteger index))operation;
- (NSArray *)ct_except:(CollectorConditionBlock)condition;
- (NSArray *)ct_take:(NSUInteger)amount;
- (NSArray *)ct_distinct;
- (NSArray *)ct_distinct:(CollectorValueBlock)valueBlock;
- (NSArray *)ct_objectsInRange:(NSRange)range;
- (NSArray *)ct_objectsOfKind:(Class)kind;
- (id)ct_winner:(id(^)(id object1, id object2))comparisonBlock;
- (BOOL)ct_all:(CollectorConditionBlock)testBlock;
- (BOOL)ct_any:(CollectorConditionBlock)testBlock;
- (BOOL)ct_none:(CollectorConditionBlock)testBlock;
- (NSUInteger)ct_count:(CollectorConditionBlock)testBlock;
- (void)ct_enqueue:(id)object;
- (id)ct_dequeue;
- (void)ct_push:(id)object;
- (id)ct_pop;
- (BOOL)ct_containsObjects:(NSArray *)array;
- (BOOL)ct_containsOnlyObjects:(NSArray *)array;
- (BOOL)ct_containsAnyObject:(NSArray *)objects;
- (BOOL)ct_areObjectsKindOfClass:(Class)klass;
- (NSNumber *)ct_min;
- (NSNumber *)ct_min:(CollectorNumberBlock)numberBlock;
- (NSNumber *)ct_max;
- (NSNumber *)ct_max:(CollectorNumberBlock)numberBlock;
- (NSNumber *)ct_sum;
- (NSNumber *)ct_sum:(CollectorNumberBlock)numberBlock;
- (NSNumber *)ct_average;
- (NSNumber *)ct_average:(CollectorNumberBlock)numberBlock;
- (NSArray *)ct_reversed;
- (NSArray *)ct_shuffled;
- (NSArray *)ct_orderedByAscending:(CollectorValueBlock)valueBlock;
- (NSArray *)ct_orderedByDescending:(CollectorValueBlock)valueBlock;
- (BOOL)ct_addObjectIfNoneEquals:(id)object;
- (BOOL)ct_addObjectIfNotNil:(id)object;
Michaël Fortin ([email protected])
Collector 在 MIT 许可证下提供。有关更多信息,请参阅 LICENSE 文件。