我是编程新手,并且通过许多在线课程学习Swift。在其中一个我们建立了一个琐事游戏应用程序,在我的业余时间,我一直在玩代码来改善它(学习我的最佳方式!)
该应用从.json文件加载所有问题和答案,该文件包含以下格式的数据:
{
"id" : "1",
"question": "Earth is a:",
"answers": [
"Planet",
"Meteor",
"Star",
"Asteroid"
],
"difficulty": "1"
}
正确答案始终是列出的第一个答案。现在,该应用程序通过以下功能提供问题和答案:
func loadQuestions(index : Int)
{
let entry : NSDictionary = allEntries.objectAtIndex(index) as! NSDictionary
let question : NSString = entry.objectForKey("question") as! NSString
let arr : NSMutableArray = entry.objectForKey("answers") as! NSMutableArray
//println(question)
//println(arr)
labelQuestion.text = question as String
let indices : [Int] = [0,1,2,3]
//let newSequence = shuffle(indices)
let newSequence = indices.shuffle()
var i : Int = 0
for(i = 0; i < newSequence.count; i++)
{
let index = newSequence[i]
if(index == 0)
{
// we need to store the correct answer index
currentCorrectAnswerIndex = i
}
let answer = arr.objectAtIndex(index) as! NSString
switch(i)
{
case 0:
buttonA.setTitle(answer as String, forState: UIControlState.Normal)
break;
case 1:
buttonB.setTitle(answer as String, forState: UIControlState.Normal)
break;
case 2:
buttonC.setTitle(answer as String, forState: UIControlState.Normal)
break;
case 3:
buttonD.setTitle(answer as String, forState: UIControlState.Normal)
break;
default:
break;
}
}
我想要做的是添加一个额外的参数,将对应于答案索引的字符串发送到名为answertext
的变量,以便我可以将此变量用作标签中的字符串(例如,显示正确答案)。现在,如果我正确理解上面的代码,我想要做的是基本上将NSString作为String发送。
我研究了这几天,我很确定我想做的事情是可能的。我看过使用switch
和if else
,但没有成功。
我的问题是:我该怎么做?
任何代码示例或推荐进一步阅读都将非常感激。或者,如果您提供实际代码,我会非常感谢它的工作原理。我正在使用最新的Xcode和Swift。
或者,如果我不想做什么,请告诉我。
答案 0 :(得分:0)
对我来说似乎是一个非常简单的要求。如果你想在变量中存储正确的答案,只需在类的顶部定义变量,就像这样..
var answertext:String?
然后在你的loadQuestions
方法存储区中正确的答案之前你将数组洗牌 - 在得到这样的答案数组之后,最好直接做到这一点。
let arr : NSMutableArray = entry.objectForKey("answers") as! NSMutableArray
if let a = arr.objectAtIndex(0) as? String {
self.answertext = a
}
因为我们使用answertext
将?
变量定义为可选项 - 您需要在以后访问它时解压缩它。
if let a = self.answertext {
self.label.text = "the answer was \(a)"
}
如果您正在寻找,请告诉我。