当我遇到错误时,我无法从服务器加载数据-error =( Error?) nil none
。在错误之前,它会看到PFObject
的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!)
}
}
})
}
}
}
}
请您更具体。我会想到发生了什么事是,当您在后台获取数据时,它会触发下一个循环运行,而不是让它有机会返回数据。
,您应该真正清理此代码。应该不应该在网络呼叫中设置uilabels文本,它可能要做的就是返回具有对象和错误状态或零的完整处理程序。请研究一些MVC模式,我认为这会有所帮助。短期修复将是可能添加一个"让dispatchGroup = dispatchGroup()"并在进入和离开时设置。希望这可以帮助。
https://developer.apple.com/documentation/dispatch/dispatchgrouphttps://www.raywenderlich.com/160651/design-patterns-ios-ising-swift-part-part-part-part-part-part-part-part-12
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)
}
}
})
}
}
}