从parse.com检索数据时出错

时间:2015-05-12 18:28:31

标签: ios swift parse-platform fatal-error

您好我想从我的parse.com类中获取一些名为“Tags”的数据,在这个类中有两个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的错误,请告诉我代码中有什么问题。

我的课程:

enter image description here

2 个答案:

答案 0 :(得分:1)

问题在于:

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

gameScore["username"]gameScore["tagtext"]可以返回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是异步的。

答案 1 :(得分:1)

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