iOS-Collection-Utilities 1.0.0

iOS-Collection-Utilities 1.0.0

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

未命名维护。



  • Norman Basham

iOS Collection Utilities

iOS Collection Utilities 通过扩展类别增加了 NSArray 和 NSDictionary 的功能。基本值 BOOL, char, int, float, CGPoint, CGSize, CGRect 的底层存储遵循 NSCoding,所以集合可以被序列化。

  • NSDictionary+DotPath - 使用点标记法创建、访问和修改字典值,例如 int age = [dict intForPath:@"person.employee.age"]
  • NSArray+Primitive - 使用原始类型与 NSArray 一起使用的便利方式,例如 int i = [array intAtIndex:0]
  • NSDictionary+Primitive - 使用原始类型与 NSDictionary 一起使用的便利方式,例如 int i = [dict intForKey:@"int1"];

NSDictionary+DotPath

NSDictionary+DotPath 扩展了 NSDictionary 和 NSMutableDictionary,以提供使用点标记法访问和修改嵌套字典值的支持。这与 JSON 对象的工作方式非常相似。此实现增加了对 BOOL, char, int, float, CGPoint, CGSize, CGRect 以及对象的支持。以下示例演示了 int,但所有其他类型的工作方式相同。

给定嵌套 NSDictionary dict

dict = {
    int = 0;
    dictLevel1 =     {
        int = 1;
        dictLevel2 =         {
            int = 2;
        };
    };
}

可以使用点标记法访问值,例如

int i = [dict intForPath:@"dictLevel1.dictLevel2.int"]; // i = 2

也可以使用点标记法设置值,例如

[dict setInt:3 forPath:@"dictLevel1.dictLevel2.newInt"];

这将得到

dict = {
    int = 0;
    dictLevel1 =     {
        int = 1;
        dictLevel2 =         {
            int = 2;
            newInt = 3;
        };
    };
}

如果嵌套字典不存在或不可以修改,则更新字典。在这个例子中,将数组(myArray)设置为未定义的字典(dictLevel3)会创建该字典

NSArray* myArray = @[@"1", @"2"];
[dict setObject:myArray forPath:@"dictLevel1.dictLevel2.dictLevel3.a"];

这将得到

dict = {
    int = 0;
    dictLevel1 =     {
        int = 1;
        dictLevel2 =         {
            int = 2;
            dictLevel3 =             {
                a = [ 1, 2 ];
            };
            newInt = 3;
        };
    };
}

NSArray+Primitive

NSArray+Primitive 扩展了 NSArray 和 NSMutableArray,以提供对原始类型 BOOL, char, int, float, CGPoint, CGSize, CGRect 的支持。以下示例演示了 int,但所有其他类型的工作方式相同。

NSMutableArray* array = [NSMutableArray array];
[array addInt:1]; // array = [1]
[array addInt:2]; // array = [1, 2]
int i = [array intAtIndex:0]; // i = 1
[array swapIndex1:0 index2:1]; // array = [2, 1]
[array replaceIntAtIndex:0 withInt:3];  // array = [3, 1]
[array insertInt:4 atIndex:1];
NSLog(@"%@", [array description]); // console shows [3, 4, 1]

NSDictionary+Primitive

NSDictionary+Primitive 扩展了 NSDictionary 和 NSMutableDictionary,以提供对原始类型 BOOL, char, int, float, CGPoint, CGSize, CGRect 的支持。以下示例演示了 int,但所有其他类型的工作方式相同。

NSMutableDictionary* dict = [NSMutableDictionary dictionary];
[dict setInt:1 forKey:@"int1"]; // dict = { int1:1 }
[dict setInt:2 forKey:@"int2"]; // dict = { int1:1, int2:2 }
int i = [dict intForKey:@"int1"]; // i = 1
NSLog(@"%@", [dict description]); // console shows { int1 = 1; int2 = 2; }