错误=(错误?)无无快速解析
不从服务器加载数据给出错误错误=(错误?)无无。在错误发现之前,它看到pfobjects 4值。然后下载并跳动。并指向一行 - “let detailPrognozS = object [”detailPrognozS“] as!String”。告诉我什么是错的?错误=(错误?)无无快速解析
func detailObject() {
let query = PFQuery(className: "soccer")
query.findObjectsInBackground { (objects:[PFObject]?, error:Error?) in
if error == nil {
for object in objects! {
let detailPrognozS = object["detailPrognozS"] as! String
let detailTitleS = object["detailTitleS"] as! String
let detailTextS = object["detailTextS"] as! String
let imageDetail = object["detailImageS"] as! PFFile
DispatchQueue.main.async { [unowned self] in self.prognozDetail.text = detailPrognozS
self.textView.text = detailTextS
self.titleDetail.text = detailTitleS
}
imageDetail.getDataInBackground(block: { (data:Data?, error:Error?) in
if error == nil {
DispatchQueue.main.async { [unowned self] in
let imageData = data
self.imageDetail.image = UIImage(data: imageData!)
}
}
})
}
}
}
请你能更具体些。我想可能会发生什么,当你要在后台获取数据时,它会触发下一个for循环来运行,而不是让它有机会返回数据。
你应该真的清理这段代码。不应该在网络调用中设置uilabels文本,它所做的只是返回一个带有对象和错误状态或零的完成处理程序。请看看我认为这将有助于的一些MVC模式。短期修复可能会添加“let dispatchGroup = DispatchGroup()”并在进入和离开时进行设置。希望这可以帮助。
https://developer.apple.com/documentation/dispatch/dispatchgroup https://www.raywenderlich.com/160651/design-patterns-ios-using-swift-part-12
谢谢。但我有与周期findObjectsInBackground –
连接的错误是的,但你也应该有一个错误消息映射到对象的数据。你输入了错误的密钥会发生什么? –
谢谢你的帮助。我发现自己有一个错误,请评价我的反应或重写。我会进行更正。 –
let query = PFQuery(className: "soccer")
query.findObjectsInBackground { (objects: [PFObject]?, error) -> Void in
if error == nil {
for object in objects! {
self.prognozDetail.text = object["detailPrognozS"] as? String
self.textView.text = object["detailTextS"] as? String
self.titleDetail.text = object["detailTitleS"] as? String
let imageDetail = object["detailImageS"] as? PFFile
imageDetail?.getDataInBackground(block: { (data:Data?, error:Error?) in
if error == nil {
if let imageData = data {
self.imageDetail.image = UIImage(data: imageData)
}
}
})
}
}
}
您是力量展开'对象[ “detailPrognozS”]'。所以如果服务器的有效载荷不包含'detailPrognozS',那么你的应用程序崩溃。 – Wukerplank