【问题标题】:Error while retrieving data from parse.com从 parse.com 检索数据时出错
【发布时间】:2015-05-12 18:28:30
【问题描述】:

您好,我想从名为“Tags”的 parse.com 类中获取一些数据,该类中有两个 3 列“objectID”、“username”和“tagtext”。我想通过 ID 和后记读取记录查找我想将“username”和“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 的错误,请告诉我我的代码有什么问题。

我的班级:

【问题讨论】:

    标签: ios swift parse-platform fatal-error


    【解决方案1】:

    问题是:

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

    gameScore["username"]gameScore["tagtext"] 可以返回 nil 值,当你说 as! String 时你说它是一个 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 是异步的。

    【讨论】:

    • 这是正确的,我的班级不是空的,请参阅更新的答案。
    • 我使用了您的代码,但出现以下错误:'AnyObject?' is not convertible to 'String'
    • 行内let username = gameScore["username"] as String? let tagtext = gameScore["tagtext"] as String?
    • 更新了答案,但也检查stackoverflow.com/questions/26691070/…
    • 我想我会为它开一个新问题,因为我原来的问题现在已经解决了!
    【解决方案2】:

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

    【讨论】:

    • 我只想要一个结果,如果我在处理程序中复制这两行,我会收到一个名为 'AnyObject?' is not convertible to 'String' 的错误
    猜你喜欢
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多