2014-01-30 27 views
0

我有NSArray的NSDictionaries。每個NSDictionary都包含一個值作爲NSString的NSArray的鍵(見下文)。我不想循環,並做傳統的比較。所以我雖然使用valueForKeyPath,但是返回數組的數據回來,而不是所有字符串的單個數組。期望的輸出是Key3 =(Data1,Data2,Data3,Data4);NSArray中的對象的聯合

任何想法。

[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

查看NSSet for union,例如, http://stackoverflow.com/questions/7616470/combining-nsarrays-through-intersection-and-union – Marco

回答

3

您可以使用NSMutableSet來進行聯合。唯一的缺點是你失去了訂單。如果這很重要,請看NSMutableOrderedSet,或自己處理邏輯。

NSArray *arrayOfStringsArrays = [myArray valueForKeyPath:@"Key3"]; 
NSMutableSet *allStrings = [NSMutableSet new]; 
for (NSArray *anArrayOfStrings in arrayOfStringsArrays) 
{ 
    [allStrings addObjectsFromArray:anArrayOfStrings]; 
} 
NSArray *allStringsAsArray = [allStrings allObjects];