从 parse.com 检索数据时出错

Error while retrieving data from parse.com

你好,我想从我的 parse.com class 中获取一些数据 "Tags" 在这个 class 中有两个 3 列 "objectID","username" 和 "tagtext"。我想通过 ID 和后记读取记录我想将 "useername" 和 "tagtext" 保存到两个字符串中。我已经像 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 的错误,请告诉我我的代码有什么问题。

我的class:

问题是:

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

gameScore["username"]gameScore["tagtext"] 可以 return nil 值,当你说 as! String 时,你说它将是一个字符串,它是 nil.

试试这样的:

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 是异步的。

您正在尝试从您的响应对象 gameScore 中读取,但它仍然是 nil 因为 getObjectInBackgroundWithId 是一个异步方法,这意味着它将 return 结果一次它完成了。将这两行放在处理程序中并从那里开始。