0

当我运行此代码并按“下一步”按钮时。我得到一个严重的过度错误。我想要它做的是检查用户输入的内容是否与给定标签的索引进行比较,每次用户输入正确答案时该索引都会发生变化。例如:naam.text =@“氟化钠”。那么formule.text 在“formules”中的索引必须与“namen”中的索引相同。

-(IBAction)next:(id)sender {

    if ([formule.text isEqualToString:[formules objectAtIndex:x]]) {
        x = arc4random() % x;
        naam.text = [namen objectAtIndex:x];
    }
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    formules = [NSMutableArray arrayWithObjects:@"NaNO3",@"NaCH3COO",@"NaCl",@"NaBr",@"NaI",@"Na2SO4",@"NaF",@"Na2S",@"NaOH",@"Na2SO3",@"Na2CO3",@"Na3PO4",@"Na2O",nil];

    namen = [NSMutableArray arrayWithObjects:@"Natriumnitraat",@"Natriumacetaat",@"Natriumchloride",@"Natriumbromide",@"Natriumjodide",@"Natriumsulfaat",@"Natriumfluoride",@"Natriumsulfide",@"Natriumhydroxide",@"Natriumsulfiet",@"NatriumCarbonaat",@"Natriumfosfaat",@"Natriumoxide", nil];
    // Do any additional setup after loading the view from its nib.

    x = arc4random() % [formules count];
    naam.text = [namen objectAtIndex:x];
} 

任何人都知道我的问题是什么以及如何解决它?

4

2 回答 2

0

我不清楚您为什么要写x = arc4random() % x;,也许您可​​以像这样写x = arc4random() % 10;。另外,您正在检查随机值。您应该放置一个 for 循环,该循环应该使用您的标签检查数组的每个值。

于 2012-06-14T08:27:29.697 回答
0

您必须在创建后保留您的数组

[formules retain];
[namen retain];

如果您使用 arc 使用 [NSMutableArray alloc] initWithObjects: 或将您的数组定义为强属性

于 2012-06-14T08:23:16.050 回答