-1

如何检查 NSArray objectAtIndex 中的值不重复?

我有两个整数 A 和 B。两者都给出随机值。现在我也有 int C,C = B - A; 我希望数字在减法后不重复。

意味着如果结果出现在减法 2 之后,那么 2 将不会再出现。如果 2 再次出现,那么我需要进行一些计算并再次生成新数字,以便给出另一个值而不是 2。

我还不能做到这一点。

我尝试了 NSMutableArray 并将值存储在其中,但比较之前的值无法成功。

这就是我正在做的

int yourInt = C;

[chk_Array addObject:[NSNumber numberWithInt:yourInt]];

int var_Count_chk_Array;
var_Count_chk_Array = [chk_Array count];
NSLog(@"var_Count_chk_Array is: %d",var_Count_chk_Array);

NSLog(@" check array : %@",chk_Array);



for (id anObject in chk_Array) {
    if (anObject == [NSNumber numberWithInt:0]) {
        // Do something
         NSLog(@"Catch ");
    }
else {

A = arc4random()% 8;
NSLog(@"A is: %d",A);

B = arc4random()% 11;
NSLog(@"B is: %d",B);

C = B - A;
NSLog(@"C is: %d",C);


lbl_A.text = [NSString stringWithFormat:@"%i",A];


if (A>B) {

    NSLog(@"A is: %d",A);
    NSLog(@"B is: %d",B);

    B = B + A +  5;

    NSLog(@"A is: %d",A);
    NSLog(@"B is: %d",B);

    lbl_B.text = [NSString stringWithFormat:@"%i",B];


    C = 0;

    C = B - A;
    NSLog(@"C is: %d",C);

    lbl_C.text = [NSString stringWithFormat:@"%i",C];
}
else{

    lbl_B.text = [NSString stringWithFormat:@"%i",B];

    NSLog(@"C is: %d",C);
    lbl_C.text = [NSString stringWithFormat:@"%i",C];
}


}

我只是希望减法后的结果与前一次不同。数字不会再来了。

任何想法或建议都将受到高度欢迎。

4

2 回答 2

1

像这样检查,

 NSArray *USAValues = [[NSArray alloc]initWithObjects:@"1",@"2",@"1", nil];

    if([USAValues containsObject:@"9"]){
        NSLog(@"already exist");
    }
    else{
        NSLog(@"new Value");

    }

编辑:

   if([youArray containsObject:newlyGenratedValue]){
        NSLog(@"already exist");
    }
    else{
        NSLog(@"new Value");

    }
于 2013-07-16T12:07:13.513 回答
0

您可以使用谓词,它会正常工作。

另一种方法是使用 NSSet 而不是 NSArray。每次在 NSSet 中添加对象时,它的计数都必须增加。根据集合的定义,它不能保存重复的值。因此重复值不会反映 Set 中的任何更改。

例如: Set 具有 {22.34.15} 并且您添加了一个值“15”。最终集将是 {22.34.15},因此集没有变化。观察计数不增加的这种情况,重做减法。

希望能帮助到你。

于 2013-07-16T13:06:35.240 回答