在NSCountedSet中保留NSArray原始顺序

时间:2014-01-13 10:35:59

标签: ios objective-c arrays nsarray nscountedset

我有NSArray,我需要从两个密钥中获取数据并将其放在NSMutableDictionary中。一个键具有string值和其他NSNumber值。当我尝试创建NSCountedSet而不添加我想用来分隔arrays的密钥时,它不起作用,因为对象不相同,基本上,我需要检查是否{{1}如果其他键不同则无关紧要。

这是初始代码:

objectId

所以我创建了两个for (PFObject *objeto in objects) { PFObject *exercicio = objeto[@"exercicio"]; NSString *string = exercicio.objectId; NSNumber *nota = objeto[@"nota"]; [exercicios addObject:string]; [notas addObject:nota]; 并存储了我需要的值。当我在此之后NSMutableArrays数组时,它们是完全有序的,这意味着logNSString属于另一个index NSNumber array }。到现在为止还挺好。

现在,当我使用字符串创建NSCountedSet时,它会更改顺序。

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

我的目标是sum与特定对象相关的NSNumbers,因此,当订单发生变化时,我会失去两个arrays之间的联系。

我不确定我能做些什么来解决这个问题,或者即使有不同的方法来实现我需要的结果。

1 个答案:

答案 0 :(得分:1)

您可以创建NSDictionary并将其添加到数组中。你将只有一个数组,你不会失去连接,你可以使用objectId作为键,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。

希望这个帮助