NSArray中的对象联盟

时间:2014-01-30 23:43:25

标签: ios objective-c cocoa-touch

我有一个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
    );
}
)

1 个答案:

答案 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];