2015-05-12 183 views
-1

您好,我想從我的parse.com類中獲取一些名爲「Tags」的數據,該類有兩個3 cols「objectID」,「username」和「tagtext」。我想通過ID和後綴來讀取記錄查找,我想將「useername」和「tagtext」保存爲兩個字符串。我做它喜歡它是parse.com文檔中:從parse.com檢索數據時出錯

@IBAction func readAction(sender: UIButton) { 

    var query = PFQuery(className:"Tags") 
    query.getObjectInBackgroundWithId("IsRTwW1dHY") { 
     (gameScore: PFObject?, error: NSError?) -> Void in 
     if error == nil && gameScore != nil { 
      println(gameScore) 
     } else { 
      println(error) 
     } 
    } 

    let username = gameScore["username"] as! String 
    let tagtext = gameScore["tagtext"] as! String 

    println(username) 
    println(tagtext) 

} 

我會得到一個名爲fatal error: unexpectedly found nil while unwrapping an Optional value錯誤,請告訴我什麼是錯在我的代碼。

我的類:

enter image description here

回答

1

的問題是:

let username = gameScore["username"] as! String 
let tagtext = gameScore["tagtext"] as! String 

gameScore["username"]gameScore["tagtext"]可以返回零值,而當你說as! String你說,這將是一個字符串,它是零。

嘗試類似:

let username = gameScore["username"] as? String 
let tagtext = gameScore["tagtext"] as? String 

你的錯誤是因爲該發生的事情,但你的最終代碼應該是這樣的:

@IBAction func readAction(sender: UIButton) { 

    var query = PFQuery(className:"Tags") 
    query.getObjectInBackgroundWithId("f3AXazT9JO") { 
    (gameScore: PFObject?, error: NSError?) -> Void in 

    let username = gameScore["username"] as? String 
    let tagtext = gameScore["tagtext"] as? String 

    println(username) 
    println(tagtext) 
    if error == nil && gameScore != nil { 
     println(gameScore) 
    } else { 
     println(error) 
    } 
    } 
} 

因爲getObjectInBackgroundWithId是異步。

+0

這是正確的,我的班級不是空的看到更新的答案。 –

+0

我用你的代碼,我得到以下錯誤:''AnyObject?'是不可轉換爲'String'' –

+0

在行'let username = gameScore [「username」] as String? let tagtext = gameScore [「tagtext」] as String?' –

1

您正試圖從您的響應對象gameScore中讀取數據,但它仍然是nil,因爲getObjectInBackgroundWithId是一種異步方法,這意味着它將在結束後返回結果。把兩條線放在處理程序中並從那裏開始。

+0

我只想要一個結果,如果我複製處理程序內部的兩行我得到一個錯誤,稱爲「AnyObject?」。不能轉換爲'String' –

相關問題