-2

我试图在我的数组中的一个动作上显示一个随机选择的单词

我看过Randomize words但仍然没有让它工作。

我的标签文字是_answer

在我看来DidLoad:

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

4

3 回答 3

4

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

例如,在您的 .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];

您也可以将其标记为成员变量(而不是属性)。

于 2013-01-01T20:29:37.147 回答
0

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

您会收到未使用的字符串错误,str因为它在设置后未使用。

于 2013-01-01T20:31:53.593 回答
0

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

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

于 2013-01-01T20:32:02.043 回答