2015-05-12 143 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' –

相关问题