gpt4 book ai didi

ios - 阻止选择 NSMutableArray 中的某些对象?

转载 作者:行者123 更新时间:2023-11-29 04:53:14 24 4
gpt4 key购买 nike

我在这里有点进退两难,因为我尝试了很多方法来实现这一目标,但都失败了。

我想要做什么:我的应用程序中有一个 NSString,它是测验中一轮问题的答案。我的答案存储在 NSMutableArray 中。这些答案是随机选择的。 我的应用程序中有 4 个按钮,它们是该轮的选项(可能的答案)。我不想有多个答案!

我尝试过的:

  1. 我尝试将答案存储在一个按钮中后删除,以便无法再次选择它,但最终导致崩溃,因为我试图在使用快速枚举时删除数组中的对象(例如循环)。
  2. 我尝试在为特定按钮设置正确答案后检测按钮标题是否等于答案,但由于某些奇怪的原因(没有崩溃)而不起作用。仍然会有多个按钮具有相同的答案

我需要什么帮助:我应该如何阻止答案出现在多个按钮中,以便测验不会显示明显的答案?

我应该做什么?

谢谢!

Edit1:所以我几乎用我的四个 UIButton 制作了一个 NSArray。

我将答案放入一个随机的 UIButton 中,如下所示:

NSInteger chosen = (arc4random() % 4);
UIButton *randButton = (UIButton *)[buttonArray objectAtIndex:chosen];
[randButton setTitle:imageName forState:UIControlStateNormal];

然后我给其他按钮添加标题,如下所示,没有答案的按钮的标题为空,所以我这样做:

- (void)titleButtons {
for (UIButton *buttons in buttonArray) {
if ([[buttons titleForState:UIControlStateNormal] == nil]) {
UIButton *button = buttons;
NSString *superheroString = (NSString*)[superheroArray objectAtIndex:(arc4random() % [superheroArray count])];
[button setTitle:superheroString forState:UIControlStateNormal];
[self checkTitles:button];
}
}

然后 checkTitle 方法如下所示,这是我尝试确保其中 2 个按钮的答案与 imageName (答案)不同的方法:

- (void)checkTitles:(UIButton*)button {
if ([[button titleForState:UIControlStateNormal] isEqualToString:imageName]) {
//Duplicate Answer so re-title button
NSString *newTitle = [superheroArray objectAtIndex:(arc4random() % [superheroArray count])];
[button setTitle:newTitle forState:UIControlStateNormal];
//Call same method again to see if new title is still same answer as pic to avoid same answers
[self checkTitles:button];
}
}
}

最佳答案

如果您有一个包含所有答案的 NSArray,并且您想要 1 个正确答案和 3 个不同的错误答案,您可以执行以下操作:

  1. 决定您想要在哪个按钮中得到正确答案。 (随机化)
  2. 从数组中获取随机答案,并将该答案的索引存储在临时数组中。
  3. 获取另一个随机答案,并确保您选择的答案没有与临时数组中的索引具有相同索引(并且再次将新索引存储在临时数组中)

关于ios - 阻止选择 NSMutableArray 中的某些对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8462230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com