2016-02-15 56 views
1

我完全是編程新手,並且通過一些在線課程學習Swift。在其中的一個我們建立了一個小遊戲程序,並在我的業餘時間,我一直用的代碼打,以提高它(學習我想,最好的辦法!)在Swift中如何添加一個額外的參數給我的函數發送一個.json文件中對應於一個變量的字符串

該應用程序加載所有從問題和答案。 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作爲一個字符串。

我已經研究了幾天,我很確定我想要做什麼是可能的。我看過使用switchif else,但沒有成功。

我的問題是:我該怎麼做?

任何代碼示例或推薦進一步閱讀將不勝感激。或者,如果您提供的是實際的代碼,我將非常感謝它的工作原理。我正在使用最新的Xcode和Swift。或者,如果我想要做的事情是不可能的,請讓我知道。

回答

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)" 
} 

讓我知道這是你在找什麼。

+0

哇,我們正在接近!你的解釋實際上是有道理的(謝謝!)。唯一的問題是,出於某種原因,它並不總是顯示正確的答案。例如,我玩了兩次10個問題遊戲,故意回答所有問題。該應用程序在第一次3次顯示正確的答案,第二次顯示4次。我認爲,發生的事情是,只要正確的答案出現在第一位,它就會得到正確的答案,否則它是錯誤的,因爲應用程序將混淆答案,以便正確的答案不總是列在第一位。 – Monomeeth

+0

酷,很高興它幫助..我已經更新了答案,以便您在洗牌陣列之前存儲正確的答案。 – Wez

+0

是的,這工作!我會做一些進一步的閱讀來讓我的頭腦發熱,所以我可以真正理解它,但是你已經很好地把它分解了! :) – Monomeeth

相關問題