2017-07-19 39 views
-1

因此,我正在开发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] 
+1

你试过了什么?可以显示您当前正在使用的代码的一部分,我们可以从那里开始 – Joshua

+6

我希望您的测验中的问题比本帖中的第一个更容易理解,或者至少比第一个更短:P –

+0

生成您的一系列问题:创建一个随机化部分),并从数组的末尾开始逐个挑选和删除问题(例如从堆栈数据对象中)。如果用户回答了错误的问题:扔掉混洗的可变数组并重新洗牌原始完整问题数组:重复,直到混洗数组变为空,在这种情况下,用户成功回答所有问题(以随机顺序)。 – dfri

回答

0

你从阵列中以问它拉一个问题每次用户,您将其索引存储在某个变量中。

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

如果用户回答不正确,请在不从数组中移除失败问题的情况下继续下一个问题(下一个索引,n + 1),直到达到数组的末尾(此时应该循环回到索引0)。

它有道理吗?

2

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

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() 
} 
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]];