2014-05-23 43 views
0

初學者到objective-c,請原諒基本錯誤。發出調用objectAtIndex方法得到隨機顏色

目標是將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

作爲新人,我很難解決這個問題。有什麼建議?

+0

的方法的結果不能作爲一個編譯時間常數。 – CrimsonChris

+0

我覺得你有這樣的想法...''self.predictionLabel.textColor = [[UIColor類] performSelector:NSSelectorFromString(randomColor)];'這是可怕的代碼。使用亞倫的答案。 – CrimsonChris

回答

2

儘管您想要,但您並未使用Key Value Coding。你真的只是猜測可能在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]; 

此外,請觀看「灰色」與「灰色」的拼寫。 [UIColor greyColor]不存在。

+0

如果您想使用基於文本的方法來調用某個類的某個鍵的值,請使用@ moby的答案。他有你想要的。 – Aaron

+1

該解決方案非常優越,因爲您可以將任何顏色放入陣列中。使用內置的「UIColor」對象的字符串表示非常有限。 – rmaddy

2

你試圖做的是像做:

[UIColor @"redColor"]; 

這是不會編譯和無效的語法。

如果你堅持使用字符串,你可以這樣做:

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

更重要的是,結果只在運行時才知道。 – CrimsonChris