2014-01-13 29 views
0

我有一個NSArray,我需要從兩個鍵獲取數據,並在NSMutableDictionary放在一起。一個鍵值爲string,另一個鍵值爲NSNumber。當我嘗試不增加我想用分離arrays鍵創建NSCountedSet,這是行不通的,因爲對象是不相同的,基本上,我需要檢查,如果objectId是相同的,不若其他按鍵事是不同的。的NSArray保持原來的順序在NSCountedSet

這裏是最初的代碼:

for (PFObject *objeto in objects) { 
     PFObject *exercicio = objeto[@"exercicio"]; 
     NSString *string = exercicio.objectId; 
     NSNumber *nota = objeto[@"nota"]; 
     [exercicios addObject:string]; 
     [notas addObject:nota]; 

所以我創建兩個NSMutableArrays和存儲我所需要的值。當我在此之後log的陣列,它們是完全有序的,這意味着NSStringNSNumber相同index它屬於在其他array。到現在爲止還挺好。

現在,當我創建了NSCountedSet與字符串,它改變了順序。

NSCountedSet *countedExercicios = [[NSCountedSet alloc] initWithArray:exercicios];

我的目標是sumNSNumbers屬於一個特定的對象,因此,當順序改變時,我失去了兩個arrays之間的連接。

我不知道自己能做什麼,或者即使有不同的方法來達到的效果,我需要解決這個問題。

+1

一個NSSet,因此一個計數集,沒有一個與其元素相關的順序。 NSOrderedSet可以,但它不會被計數,而不是NSSet的子類。 – Monolo

回答

1

您可以創建NSDictionary並將其添加到數組。你將有隻有一個數組,你不會失去連接時,可以使用對象ID作爲密鑰,並且作爲的NSNumber值:

for (PFObject *objeto in objects) { 
     PFObject *exercicio = objeto[@"exercicio"]; 
     NSString *string = exercicio.objectId; 
     NSNumber *nota = objeto[@"nota"]; 
     NSDictionary *dict = @{string: nota}; 
     [newArray addObject: dict]; 
} 

當你需要得到所有鍵(OBJECTID),可以使用NSPredictate。

希望這個幫助

+0

我不確定我是否得到它。那麼我將如何計算重複數據並在此之後對它們的值進行求和?謝謝。 – Jorge

+0

要獲得重複項,您必須枚舉數組並比較字典,如果發現重複項執行您想要的操作。如果你想得到總和,讓我們說objectId等於1的對象,你可以調用NSNumber * sum = [newArray valueForKeyPath:@「@ sum.1」]; – Greg

+0

完美!很好的幫助。謝謝。 – Jorge

相關問題