我有一个NSArray,我需要从两个键中获取数据并放在一个NSMutableDictionary中。一个键具有string值,而其他NSNumber值。当我尝试创建NSCountedSet而不添加要用于分隔arrays的键时,它不起作用,因为对象不相同,基本上,我需要检查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并存储所需的值。当我在此之后对数组进行log排序时,它们是完全有序的,这意味着NSString与另一个index所属的NSNumber在同一array中。到目前为止,一切都很好。

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

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

我的目标是sum与特定对象有关的NSNumbers,因此,当顺序更改时,我将失去两个arrays之间的连接。

我不确定该如何解决这个问题,甚至不确定是否有其他方法可以达到所需的结果。

最佳答案

您可以创建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。

希望有帮助

关于ios - 在NSCountedSet中保持NSArray原始顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21089141/

10-09 17:18