无法从解析服务器加载错误=(错误?)nil none



当我遇到错误时,我无法从服务器加载数据-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)
                                        }
                            }
                        })
                    }
                }
            }

相关内容

最新更新