数学逻辑替换if语句

时间:2014-07-30 16:27:34

标签: objective-c math if-statement operators

以下代码有效,但我正在尝试提出一些数学逻辑并使用一些binary运算符来代替if statement

NSInteger indexCor = 0;
    for (PFObject *object in self.objects) {
        if (object == custom) {
            if (indexCor < 2) {
                NSLog(@"rodou indexCor <=2.");
                [self.coresConjugadosDict setObject:self.uiColorsArray[0] forKey:object.objectId];
                indexCor++;
            }
            else if (indexCor < 4) {
                [self.coresConjugadosDict setObject:self.uiColorsArray[1] forKey:object.objectId];
                indexCor++;
            }
            else if (indexCor < 6) {
                [self.coresConjugadosDict setObject:self.uiColorsArray[2] forKey:object.objectId];
                indexCor++;
            }
            else if (indexCor < 8) {
                [self.coresConjugadosDict setObject:self.uiColorsArray[3] forKey:object.objectId];
                indexCor++;
            }
            else if (indexCor < 10) {
                [self.coresConjugadosDict setObject:self.uiColorsArray[4] forKey:object.objectId];
                indexCor++;
            }
            else if (indexCor < 12) {
                [self.coresConjugadosDict setObject:self.uiColorsArray[5] forKey:object.objectId];
                indexCor++;
            }
            else {
                [self.coresConjugadosDict setObject:self.uiColorsArray[6] forKey:object.objectId];
                indexCor++;
            }
        }

所以基本上,一些对象将与另一个对象组合。我需要做的是为每组两个组合对象设置一个UIColor。我有一个NSArray和我想要使用的UIColors,现在,会发生的事情是符合特定条件的每个对象我在array添加第一种颜色,增加它。这样,每组两个对象将具有不同的颜色。

所以,如果有6个对象......

  

对象1,2 =颜色1对象3,4 =颜色2对象5,6 =颜色3

等等。

我希望在没有if statement的情况下实现这一目标。

1 个答案:

答案 0 :(得分:4)

看起来你想做出这些转变:

indexCor    uiColorsArray index
--------    -------------------
0, 1        0
2, 3        1
4, 5        2
6, 7        3
8, 9        4
10, 11      5
12 and up   6

这可以通过将indexCor整数除以2来实现,并将结果限制为6,如下所示:

[self.coresConjugadosDict
    setObject:self.uiColorsArray[min(indexCor++/2, 6)]
    forKey:object.objectId];

注意:您可能需要定义自己的min函数才能使用上述代码; 上述代码无法使用简单的MIN宏正常工作,除非您将indexCor++移到另一行。

Demo of the concept on ideone.