我有一个NSArray的NSDictionary。每个NSDictionary都包含一个值为NSString的NSArray的键(见下文)。我不想循环并进行传统的比较。所以我虽然使用了valueForKeyPath,但返回的是数据数组,而不是所有字符串的单个数组。
预期输出为Key3 =(Data1,Data2,Data3,Data4);
任何想法。
[myArray valueForKeyPath:@"@unionOfObjects.Key3"];
<__NSCFArray 0xe70c10>(
{
Key1 = 1;
Key2 = "New Location";
Key3 = (
Data1,
Data2,
Data3
);
},
{
Key1 = 2;
Key2 = "Old Location";
Key3 = (
Data1,
Data2,
Data4
);
}
)
答案 0 :(得分:3)
您可以使用NSMutableSet
进行联合。唯一的缺点是你失去了订单。如果这很重要,请查看NSMutableOrderedSet
,或自己处理逻辑。
NSArray *arrayOfStringsArrays = [myArray valueForKeyPath:@"Key3"];
NSMutableSet *allStrings = [NSMutableSet new];
for (NSArray *anArrayOfStrings in arrayOfStringsArrays)
{
[allStrings addObjectsFromArray:anArrayOfStrings];
}
NSArray *allStringsAsArray = [allStrings allObjects];