您好我想从我的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
的错误,请告诉我代码中有什么问题。
我的课程:
答案 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
是一个异步方法,这意味着它将在完成后返回结果。将两行放在处理程序中并从那里开始。