以下代码有效,但我正在尝试提出一些数学逻辑并使用一些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
的情况下实现这一目标。
答案 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++
移到另一行。