Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在NSCountedSet中保留NSArray的原始顺序_Ios_Objective C_Arrays_Nsarray_Nscountedset - Fatal编程技术网

Ios 在NSCountedSet中保留NSArray的原始顺序

Ios 在NSCountedSet中保留NSArray的原始顺序,ios,objective-c,arrays,nsarray,nscountedset,Ios,Objective C,Arrays,Nsarray,Nscountedset,我有一个NSArray,我需要从两个键获取数据,并将它们放在NSMutableDictionary中。一个键有string值,另一个键有NSNumber值。当我试图创建NSCountedSet而不添加我想要用来分隔数组的键时,它不起作用,因为对象不完全相同,基本上,我需要检查objectId是否相同,不管其他键是否不同 以下是初始代码: for (PFObject *objeto in objects) { PFObject *exercicio = objeto[@"exerc

我有一个
NSArray
,我需要从两个键获取数据,并将它们放在
NSMutableDictionary
中。一个键有
string
值,另一个键有
NSNumber
值。当我试图创建
NSCountedSet
而不添加我想要用来分隔
数组的键时,它不起作用,因为对象不完全相同,基本上,我需要检查
objectId
是否相同,不管其他键是否不同

以下是初始代码:

for (PFObject *objeto in objects) {
        PFObject *exercicio = objeto[@"exercicio"];
        NSString *string = exercicio.objectId;
        NSNumber *nota = objeto[@"nota"];
        [exercicios addObject:string];
        [notas addObject:nota];
因此,我创建了两个
nsmutablearray
,并存储了所需的值。当我
log
记录这之后的数组时,它们是完全有序的,这意味着
NSString
NSNumber
索引
相同,它属于另一个
数组
。到目前为止,一切顺利

现在,当我用字符串创建
NSCountedSet
时,它改变了顺序

NSCountedSet*countedexercios=[[NSCountedSet alloc]initWithArray:exercios]

我的目标是对与特定对象相关的
nsnumber
进行求和,因此,当顺序发生变化时,我将失去两个
数组之间的连接


我不确定我能做些什么来解决这个问题,甚至不确定是否有不同的方法来实现我需要的结果

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


希望此帮助

NSSet和计数集没有与其元素关联的顺序。NSOrderedSet有,但它不被计算,也不是NSSet的子类。我不确定我是否得到了它。我该如何计算重复项,并在此之后求和它们的值?谢谢。要获得重复项,您必须枚举数组并比较字典,如果您发现重复项,请执行您想对其执行的操作。如果您想获取的和,比如objectId等于1的对象,可以调用NSNumber*sum=[newArray valueForKeyPath:@“@sum.1”];完美的帮了大忙。谢谢