ZTuple 1.2.1

ZTuple 1.2.1

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

William Zang 维护。



ZTuple 1.2.1

  • 作者:
  • WilliamZang

该库已过时。请移至 https://github.com/EasyReactFramework/EasyTuple

ZTuple

CI Status Version License Platform

为何需要它

有时候您可能需要返回除了单个值之外的多个值。在这些情况下,您可以使用指针,如 NSError **,或者将它们放入数组或字典中,或者直接创建一个类。但现在您有了另一个选择,ZTuple,它可以以更好的方式组合多个值。

如何使用

您可以使用宏 ZTuple 来创建一个元组,并且它支持泛型。例如:

ZTuple3<NSNumber *, NSString *, NSDictionary> *tuple = ZTuple(@1, @"string", nil);

ZTuple3 表示在此元组中有 3 个项。因此 ZTuple6 是 6 个项。从 ZTuple1ZTuple20 有 20 个类支持您使用。

ZTuple的最大容量为20。在大多数情况下已经足够大。如果您真的需要比这更大的东西,目前可能更好的选择是数组或字典。

您有多种方法来获取和设置值

ZTuple3<NSNumber *, NSString *, NSDictionary> *tuple = ZTuple(@1, @"string", nil);
// use the unpack macro
ZTupleUnpack(NSNumber *a, NSString *b, NSDictionary *c, Z_FromVar(tuple));
NSLog(@"first:%@, second:%@, last:%@", a, b, c);
// use ordinal numbers like first, second
tuple.first;
tuple.first = @5;
// use last
tuple.last;
tuple.last = @"last";
// use subscript
tuple[0];
tuple[0] = @"s";
// iteration
BOOL hasNil = NO;
for (id value in tuple) {
    NSLog(@"%@", value);
    if (value == nil) hasNil = YES;
    tuple.first = @3 // will throw an exception!
}
// hasNil -> YES

元组中的最后一个元素是“最后一个元素”的别名,在上面的示例代码中,它等同于second

元组内所有元素都是Key-Value Observable。如果您观察secondlast,当您改变second(或last)时,两个回调都将被调用。

ZTuple支持NSCopying协议。如果您需要,可以轻松地复制它们。

功能

  • ZTuple宏可快速创建元组
  • 序数值属性
  • 使用下标访问
  • 使用for-in访问
  • 支持NSScopy协议
  • 删除某些项或取出某些项
  • 合并两个元组
  • 将元组转换为数组或将数组转换为元组

优势

与 NSArray / NSDictionary 相比,ZTuple具有以下优势

  • 支持每种元素的泛型
  • 支持 Key-Value Observable
  • 支持 nil
  • 通过序数字和last访问元素

致谢

此库深受libextobjc中宏技术的影响。

示例

要运行示例项目,请首先克隆repo,然后从示例目录运行pod install

要求

安装

ZTuple可通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中

pod "ZTuple"

作者

WilliamZang,[email protected]

JohnnyWu,[email protected]

许可

ZTuple在MIT许可下可用。有关更多信息,请参阅LICENSE文件。