iOS Collection Utilities 通过扩展类别增加了 NSArray 和 NSDictionary 的功能。基本值 BOOL, char, int, float, CGPoint, CGSize, CGRect
的底层存储遵循 NSCoding,所以集合可以被序列化。
int age = [dict intForPath:@"person.employee.age"]
。int i = [array intAtIndex:0]
。 int i = [dict intForKey:@"int1"];
。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 和 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 和 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; }