如何随机化单词

时间:2013-01-01 20:26:12

标签: objective-c ios cocoa-touch arc4random

我试图在我的阵列

的动作中随机显示一个单词

我看过Randomize words,但仍然无法让它发挥作用。

我的标签文字为_answer

在我的viewDidLoad中:

NSArray *words = [NSArray arrayWithObjects: @"Blue", @"Green", @"Red", nil ];
NSString *str=[words objectAtIndex:arc4random()%[words count]];

根据我的行动方法:

 [_answer setText:[NSString stringWithFormat:@"%d", arc4random()%[words count]];

str

我收到一个未使用的字符串错误

在我的操作方法中,我有一个错误use of undeclared identifier "words",但它在viewDidLoad

3 个答案:

答案 0 :(得分:4)

范围。您在viewDidLoad方法(words,str)中创建的变量仅在该方法(即其范围)内有效。如果要在其他方法中使用它们,例如“action”方法,则需要在类范围中将它们声明为成员变量/属性。

例如,在你的.h文件中:

@interface ExampleViewController : UIViewController
    @property(nonatomic) NSString *answer;
    // ... your other stuff ...
@end

在您的.m文件中:

@synthesize answer;
- (void)viewDidLoad
{
    NSArray *words = [NSArray arrayWithObjects: @"Blue", @"Green", @"Red", nil ];
    self.answer = [words objectAtIndex:arc4random()%[words count]];
    [super viewDidLoad];
}

最后,仍然在.m,你的行动:

[_answer setText:self.answer];

您也可以将其转换为成员变量(不是属性)。

答案 1 :(得分:0)

方法中声明的变量是该方法的局部变量。要在同一个类中的方法之间共享变量,请将它们设为实例变量,最好将它们设为@property s。

str出现未使用的字符串错误,因为它在设置后未使用。

答案 2 :(得分:0)

将对象str分配给您的标签。 [字数]包含数组的计数而不是值。

使str对象成为全局,然后使用该对象将值赋给标签。