如何在数组被回答后从数组中删除它?

时间:2017-07-19 06:14:39

标签: ios arrays swift xcode

所以我正在为iOS开发一个测验应用程序并将我的代码设置为我有一个包含问题的数组和一个显示该问题数组中的随机问题的函数。我如何配置代码以确保在询问问题之后将其从阵列中删除,直到阵列中的所有其他问题都得到解答,或者直到来自阵列的后续问题被错误地解决并重置整个测验,然后重置后将所有已回答的问题添加回阵列?如何配置代码以查看用户是否已回答随机问题?基本上,一旦提出问题我就不想再问它,直到先问了所有其他问题。

这是我的代码(我希望func randomQuestion在询问一次后从数组中删除问题):

@IBOutlet weak var questionLabel: UILabel! 

let questions = [//array of questions inside these brackets]

//random question generation function
func randomQuestion() {
    index = Int(arc4random_uniform(UInt32(questions.count)))
    questionLabel.text = questions[index]

3 个答案:

答案 0 :(得分:2)

首先,如果答案是正确的,那么在数组中查找该特定问题的索引,并将该数组对象添加到另一个虚拟数组并将其从问题数组中删除,如果他回答错误,则将该虚拟数组对象添加到问题数组中,< / p>

var arrQuestions = [String]()
var arrAnsweredQuestions = [String]()
if(answerCorrect) {
  let index = arrQuestions.index(of: question)
  arrQuestions.remove(at: index)
  arrAnsweredQuestions.append(question)
} else {
 for question in arrAnsweredQuestions {
    arrQuestions.append(question)
 }
 arrAnsweredQuestions.removeAll()
}

答案 1 :(得分:0)

每次从数组中提取问题以便向用户提问时,都会将索引存储在某个变量中。

如果用户正确回答了问题,请删除该索引处的元素,然后继续。因为删除索引n处的元素导致后续元素向下移动一个位置,所以你再次使用索引n处的元素(以前在n + 1处)继续进行处理,除非它超过了数组的边界,在这种情况下你应该返回索引0(除非是空的,即用户已回答所有问题)。

如果用户回答错误,请继续执行下一个问题(下一个索引,n + 1),而不从数组中删除失败的问题,直到到达数组的末尾(此时应循环回索引0) )。

有意义吗?

答案 2 :(得分:0)

检查下面的代码我有_bidderArray的字典,我想在字典中更改bidAmount。

NSMutableDictionary *dict = [[_bidderArray objectAtIndex:_selectedIndex.row] mutableCopy];
[dict setObject:[NSString stringWithFormat:@"%@", bidAmount ] forKey:@"your_bid"];
[_bidderArray replaceObjectAtIndex:_selectedIndex.row withObject:[dict copy]];