当前位置:  开发笔记 > 编程语言 > 正文

用KVC拼合字典的数组

如何解决《用KVC拼合字典的数组》经验,为你挑选了1个好方法。

我正在尝试使用KVC使二维字典数组扁平化。

NSArray *toBeFlatten = @[@[@{@1:@1}],@[@{@2:@2}]];
NSArray *flat = [toBeFlatten valueForKeyPath:@"@unionOfArrays.self"];
// flat:@[NSNull.null, NSNull.null];

为什么词典“转换”为NSNull?



1> matt..:

这是因为它valueForKeyPath:也适用于字典。以及它如何运作?它在每个字典中查找,尝试"self"用作键,没有找到这样的键,然后返回NSNull表示缺少的值。

要了解我的意思,请考虑您的示例中的这种变化:

NSArray *toBeFlatten = @[@[@{@"self":@"hey"}],@[@{@"other":@"ho"}]];
NSArray *flat = [toBeFlatten valueForKeyPath:@"@unionOfArrays.self"];

结果为@[@"hey", NSNull.null]— 第一个字典中"hey"匹配的键的值"self",而为null,因为第二个字典中没有匹配的键。

你大概的意思说的是valueForKeyPath:@"@unionOfArrays.@self"(通知at符号,使self运营商,而不是一个键)。


@matt哪种对self的用法没有记载?-[NSDictionary valueForKey:]`的文档说:“如果密钥不是以“ @”开头,则调用objectForKey:。如果密钥确实以“ @”开头,则剥离“ @”,然后使用以下命令调用[super valueForKey:]。其余的关键。”。KVC将密钥“ self”转换为方法“ self”。
推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有