我有一个变量,它从一个充满不同预测的数组中为一个算命先生应用程序返回一个随机值,代码如下:
- (NSString *) randomPredictions {
int random = arc4random_uniform(self.predictions.count);
return [self.predictions objectAtIndex:random];
}
现在,我正在尝试制作另一个将变为预测文本颜色的变量。如果一个好运返回,颜色将是绿色,但如果一个坏的返回,它将是红色。
我想这样做的方法是在数组中选择返回的randomPrediction的位置,并在if语句中检查一组索引。如果它是所选数字之一,它将获得一种颜色,否则它将获得另一种颜色。
到目前为止,这就像我所知道的那样,但我知道这是错误的并且会感谢一些帮助:
- (NSString *) selectedColor {
if (randomPredictions = objectAtIndexes:0,2,4,6) {
return [UIColor greenColor];
} else {
return [UIColor redColor];
}
}
答案 0 :(得分:1)
简单直接的方式。
NSUInteger index = [self.predictions indexOfObject:[self randomPredictions]];
if (index == 0 || index == 2 || index == 4 || index == 6) {
return [UIColor greenColor];
} else {
return [UIColor redColor];
}
更复杂但更完整的方式
NSUInteger index = [self.predictions indexOfObject:[self randomPredictions]];
if (index == NSNotFound) { // Some error occurred!!!!
return nil;
} else if (index % 2 == 0) { // All even number indexes are green.
return [UIColor greenColor];
} else {
return [UIColor redColor];
}
答案 1 :(得分:1)
你不会被一系列词典或核心数据更好地服务,其中颜色,声音和答案文本等多个属性都可以与相同的键值/属性值相关联?
但如果不是,那么使用switch / case语句呢?
switch (index) {
case :0
case :2
case :4
case :6 {
[UIColor redColor];
break;
}
default: {
[UIColor greenColor];
break;
}
}
case
语句允许分组的案例通过,因为没有break
与之关联。所以0,2,4和6都运行相同的代码。其他一切都达到了默认值。这将允许一些财富一般,并获得黄色,但在案例6完成后包括它们并在一个休息时间将它们组合在一起。
case 10:
case 11:
case 12: {
[UIColor yellowColor];
break;
}
我仍然喜欢字典或核心数据选项,但这种方式是,我相信更灵活和可维护。
P.S。原谅任何语法错误。我正在进行编码,但未经过测试。