错误=(错误?)无无快速解析

错误=(错误?)无无快速解析

问题描述:

不从服务器加载数据给出错误错误=(错误?)无无。在错误发现之前,它看到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!) 

             } 

          } 

         }) 
        } 
       } 
      } 
+0

您是力量展开'对象[ “detailPrognozS”]'。所以如果服务器的有效载荷不包含'detailPrognozS',那么你的应用程序崩溃。 – Wukerplank

请你能更具体些。我想可能会发生什么,当你要在后台获取数据时,它会触发下一个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

+0

谢谢。但我有与周期findObjectsInBackground –

+0

连接的错误是的,但你也应该有一个错误消息映射到对象的数据。你输入了错误的密钥会发生什么? –

+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) 

             } 

          } 

         }) 
        } 
       } 
      }