我正在尝试使用KVC使二维字典数组扁平化。
NSArray *toBeFlatten = @[@[@{@1:@1}],@[@{@2:@2}]];
NSArray *flat = [toBeFlatten valueForKeyPath:@"@unionOfArrays.self"];
// flat:@[NSNull.null, NSNull.null];
Run Code Online (Sandbox Code Playgroud)
为什么词典“转换”为NSNull?
这是因为它valueForKeyPath:也适用于字典。以及它如何运作?它在每个字典中查找,尝试"self"用作键,没有找到这样的键,然后返回NSNull表示缺少的值。
要了解我的意思,请考虑您的示例中的这种变化:
NSArray *toBeFlatten = @[@[@{@"self":@"hey"}],@[@{@"other":@"ho"}]];
NSArray *flat = [toBeFlatten valueForKeyPath:@"@unionOfArrays.self"];
Run Code Online (Sandbox Code Playgroud)
结果为@[@"hey", NSNull.null]— 第一个字典中"hey"匹配的键的值"self",而为null,因为第二个字典中没有匹配的键。
你大概的意思说的是valueForKeyPath:@"@unionOfArrays.@self"(通知at符号,使self运营商,而不是一个键)。
| 归档时间: |
|
| 查看次数: |
269 次 |
| 最近记录: |