我是靠谱客的博主 孤独狗,这篇文章主要介绍数组的valueforkey方法,现在分享给大家,希望可以做个参考。

数组的 valueforkey方法.
苹果的官方解释

Returns an array containing the results of invoking valueForKey: using key on each of the array’s objects.

在数组每一个元素上使用valueforkey: 获得的结果以数组形式返回.
也就是说数组会遍历所有元素, 对每一个元素都执行一次valueforkey:并将结果以数组形式返回.


下面我们来测试一下
测试一
1. 如果数组里是字典, 会找到以key为键的value. 请注意观察打印结果, 只是将value1打印. 并没将dic1 全部打印.

复制代码
1
2
3
4
5
6
7
8
self.array = [NSMutableArray new]; NSDictionary *dic1 = @{@"key1" : @"value1", @"key3" : @"value3"}; NSDictionary *dic2 = @{@"key2" : @"value2"}; [self.array addObject:dic1]; [self.array addObject:dic2]; id value1 = [self.array valueForKey:@"key1"] ; NSLog(@"value 取到的数据是 %@", value1);

打印结果

复制代码
1
2
3
4
2017-07-22 18:06:30.203 learnSDWebImage[1577:98718] value 取到的数据是 ( value1, "<null>" )

测试二
2. 数组里装的是对象. 因为对象的变量本身也是以键值对的方式保存, 所以结果和字典一样,都能取出来.

复制代码
1
2
3
4
5
6
7
8
ChildClassOne *oneChild = [ChildClassOne new]; oneChild.myName = @"oneChild"; ChildClassOne *twoChild = [ChildClassOne new]; twoChild.myName = @"twoChild"; [self.array addObject:oneChild]; [self.array addObject:twoChild]; id value1 = [self.array valueForKey:@"myName"] ; NSLog(@"value 取到的数据是 %@", value1);
复制代码
1
2
3
4
2017-07-22 18:21:22.153 learnSDWebImage[1685:109150] value 取到的数据是 ( oneChild, twoChild )

测试三
3. 数组里装的是sub数组, sub数组内部还有字典.官方的解释是对每个元素都调用一次valueforkey, 那么结果应该也是可以打印出值的.

复制代码
1
2
3
4
5
6
7
8
9
10
self.array = [NSMutableArray new]; NSDictionary *dic1 = @{@"key1" : @"value1", @"key3" : @{@"key1" : @"value3"}}; NSDictionary *dic2 = @{@"key2" : @"value2", @"key3" : @{@"key1" : @"value4"}}; NSArray *subAry = @[@{@"key1" : @"value5"}]; [self.array addObject:dic1]; [self.array addObject:dic2]; [self.array addObject:subAry]; id value1 = [self.array valueForKey:@"key1"] ; NSLog(@"value 取到的数据是 %@", value1);

打印结果

复制代码
1
2
3
4
5
6
7
8
2017-07-22 18:30:18.101 learnSDWebImage[1831:116475] value 取到的数据是 ( value1, "<null>", ( value5 ) )

请注意看1. value3和value4没有打印出来. 说明对字典调用valueforkey时是不会去检查子value里的数据的, 这是很正常的逻辑. 2. value5 是用数组封装起来的, 感觉内部应该是用了递归.

最后

以上就是孤独狗最近收集整理的关于数组的valueforkey方法的全部内容,更多相关数组内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部