发出调用objectAtIndex方法来获取随机颜色

时间:2014-05-23 20:39:01

标签: objective-c arc4random

初学者到目标-c,所以请原谅基本的错误。

目标是将predictionLabel.textColor设置为数组中的随机颜色。

// fill array colors
self.colors = @[@"redColor", @"greenColor", @"blueColor", @"greyColor", @"orangeColor", @"purpleColor"];

// get random number based on array count
int randomColor = arc4random_uniform(self.colors.count);

// set predictionLabel.textColor to random color
self.predictionLabel.textColor = [UIColor [self.colors objectAtIndex:randomColor]];

我一直在[UIColor [self.colors收到错误消息“预期标识符”。

新的,我很难排除这个问题。有什么建议?

2 个答案:

答案 0 :(得分:2)

尽管您愿意,但您并未使用键值编码。您实际上只是猜测UIColor上可能存在的方法名称。为什么不使用UIColor对象数组而不是类方法的名称。像这样:

self.colors = @[[UIColor redColor], [UIColor greenColor], [UIColor blueColor], [UIColor grayColor], UIColor orangeColor], [UIColor purpleColor]];

// get random number based on array count
int randomColor = arc4random_uniform(self.colors.count);

// set predictionLabel.textColor to random color
self.predictionLabel.textColor = [self.colors objectAtIndex:randomColor];

另外,请注意" grey"的拼写。 vs"灰"。 [UIColor greyColor]不存在。

答案 1 :(得分:2)

你要做的就是做:

[UIColor @"redColor"];

它只是不会编译而且语法无效。

如果你坚持使用字符串,你可以这样做:

self.predictionLabel.textColor = [UIColor valueForKey:[self.colors objectAtIndex:randomColor]];