NSCFString valueForUndefinedKey此类不是键值distinctUnionOfObjects的键值编码兼容

时间:2014-05-13 14:54:12

标签: ios key-value-observing

我有一个字符串数组,其中包含真正的类`_NSCFConstantString'和

[myArray valueForKeyPath:@"@distinctUnionOfObjects.self"];

按预期工作。但是对于具有实际类`_NSCFString'的字符串数组的情况。相同的keypath会产生错误:

  

' [< __ NSCFString 0x14d9e4d0> valueForUndefinedKey:]:这个类不是   键值distinctUnionOfObjects的键值编码兼容。'

如果我没有直接构建我的数组,如何使用此密钥路径?为什么会发生这种情况?

完整代码:

    // demo array
    NSArray * a = [NSArray arrayWithObjects:@"one", @"one" , @"two", nil];
    // remoteDictionariesArray - array of dictionaries from webservice obtained with AFNetworking : @[@{@"name":@"one", @"name":@"one", @"name":@"two"}]
    NSArray *namesArray = [remoteDictionariesArray valueForKeyPath:@"Name"];

    // works fine
    NSArray *unique = [a valueForKeyPath:@"@distinctUnionOfObjects.self"];

    // throw exception
    NSArray *unique1 = [namesArray valueForKeyPath:@"@distinctUnionOfObjects.self"];

更新

po remoteDictionariesArray
<__NSCFArray 0x14ea0990>(
{
    Name = "Name";
    ProductId = "d671fd2f-25cc-4b39-acea-7d2d2acb4f80";
},
{
    Name = "Name";
    ProductId = "49c691c7-9b38-488b-83c6-ba2d4a9a5e4c";
}
)

po namesArray
<__NSArrayI 0x14eab4d0>(
Name,
Name
)

NSArrayI元素是(__ NSCFString *)

0 个答案:

没有答案