DZLCollectionOperators 1.1.0

DZLCollectionOperators 1.1.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2014年12月

Sam Dods维护。



  • Sam Dods

正确实现的KVC集合操作符

此项目的目的是解决KVC集合操作符的缺点

明显的优势是条件的清晰度。

但我还希望以下内容

  • 显式选择操作符,以及在编译时间内对无效使用产生错误
  • 显式指定集合中期望的对象类型
  • 如果使用不属于集合中对象类型的键路径,则编译时产生错误
  • 在键路径上的代码补全

DZLCollectionOperators

所有旨在公开使用的宏都有以下格式

宏名称(collection,collection中对象的类型,keyPath)

  • collection - NSArray *NSSet *等实例,例如self.transactions
  • collection中对象的类型 - 集合中对象的类型,例如Transaction * - 我选择要求包括星号的完整类型,以便明确
  • keyPath - 点分隔的选择器名称,例如payee.name

...除了针对NSNumber *集合的“添加便利”宏外,请见下文。

示例

我可以创建一个包含所有交易付款人姓名的数组,如下所示

NSArray *payeeNames = DZLUnionOfObjects(self.transactions, Transaction *, payee.name);

所有宏的完整列表

简单集合操作符

  • DZLAverage - 等价于 @avg
  • DZLCount - 等价于 @count
  • DZLSum - 等价于 @sum
  • DZLMinimum - 等价于 @min,增加了对集合中的对象响应 -compare 的编译时验证
  • DZLMaximum - 等价于 @max,增加了对集合中的对象响应 -compare 的编译时验证

简单集合操作符 - 额外验证

  • DZLAverageNumber - 与DZLAverage相同,但检查key path是否指向NSNumber *实例
  • DZLSumNumber - 与DZLSum相同,但检查key path是否指向NSNumber *实例
  • DZLAverageDouble - 与DZLAverage相同,但检查key path是否指向double或兼容的标量类型
  • DZLSumDouble - 与 DZLSum 相同,但会检查键路径是否指向 double 或兼容的标量类型

增加的便利功能(见下文)

  • DZLAverageOfNumbers - 只接受一个参数——一个包含 NSNumber * 对象的集合——并返回平均值
  • DZLSumOfNumbers - 只接受一个参数——一个包含 NSNumber * 对象的集合——并返回总和

对象操作符

  • DZLDistinctUnionOfObjects - 等同于 @distinctUnionOfObjects
  • DZLUnionOfObjects - 等同于 @unionOfObjects

数组和集合操作符

  • DZLDistinctUnionOfArrays - 等同于 @distinctUnionOfArrays
  • DZLUnionOfArrays - 等同于 @unionOfArrays
  • DZLDistinctUnionOfSets - 等同于 @distinctUnionOfSets

增加的便利功能

您可以使用上述宏来获取一组数字的平均值,如下所示

NSNumber *average = DZLAverage(numbers, NSNumber *, self);

我为此和一个求和函数增加了便利方法,用法如下

NSNumber *average = DZLAverageOfNumbers(numbers);
NSNumber *sum = DZLSumOfNumbers(numbers);

安装

使用 CocoaPods,或者直接将 DZLCollectionOperators.h 文件添加到您的项目中。

就这么简单,它只是一个包含宏的头文件!

如果您喜欢这个,可以 在Twitter上关注我 获取更多类似内容!