0

由于出现错误,我无法从服务器加载数据 - error =( Error?) nil none。在错误之前,它会看到PFObject4 个值。然后下载和节拍。并指向一条线 - 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!)
                        }
                    }
                })

            }
        }
    }

}
4

2 回答 2

0

请你能更具体一点。我想正在发生的事情是,当你要在后台获取数据时,它会触发下一个 for 循环运行,而不是让它有机会返回数据。

不过,您确实应该清理此代码。不应该在网络调用中设置 uilabels 文本,它所能做的就是返回一个带有对象和错误状态或 nil 的完成处理程序。请查看一些 MVC 模式,我认为这会有所帮助。短期修复可能是添加一个“let dispatchGroup = DispatchGroup()”并在它进入和离开时设置。希望这可以帮助。

https://developer.apple.com/documentation/dispatch/dispatchgroup https://www.raywenderlich.com/160651/design-patterns-ios-using-swift-part-12

于 2017-10-04T07:27:49.867 回答
0
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)

                                        }

                            }

                        })
                    }
                }
            }
于 2017-10-04T10:25:32.620 回答