微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据检索上发生didSet线程错误,为什么称为函数未完全执行?

如何解决数据检索上发生didSet线程错误,为什么称为函数未完全执行?

我正在测试一种情况,即某些用户可能会面临在没有互联网连接的情况下打开应用程序的情况,并且在某些时候,使用该应用程序时,连接会重新出现,因此我希望他们检索其数据。从后端检索数据,将其追加到数组,但是奇怪的是,需要遵循的功能未完全执行,并且出现线程错误。以下是相关的代码块:

有问题的数组,使用didSet并调用函数

var customButtons:[CustomColors]=[

        CustomColors(color: UIColor(red: 1,green: 1,blue: 1,alpha: 1 )),CustomColors(color: UIColor(red: 247/255,green: 214/255,blue: 217/255,]{
   didSet {
       if(customButtons[customButtons.count-2].nature.frame.minX == 0){
           print("bugged")
           sortCColor()
       }
  }
}

viewDidLoad()上的获取请求和连接检测器:

 override func viewDidLoad() {

        Net.shared.monitorNet(){ [self]value in
            if(value == "connected"){
                connection = true
                print("on")
                initFetchRequests()
                
                // send  avatar and other reqs add nested conditional to avoid more reloads
            } else {
                print("none")
                connection = false
            }
    }
        setupScene()

       print("loaded")
    }

要运行的功能

func sortCColor()->Void{
        for (i,val) in customButtons.enumerated(){
            val.nature.tag = i
            let xDeduct = 6*Int(floor(CGFloat(Int(val.nature.tag)/6)))
            let width = Float(bounds.size.width) > 450 ? CGFloat(Int(0.10*Double(colorScrollW))) : CGFloat(Int(0.15*Double(colorScrollW)))
            let x = CGFloat(0.0073*bounds.size.width) + CGFloat((colorScrollW+Int(width*0.2))*(i - xDeduct))*0.15 // -6*floor
            let y = CGFloat(0.0073*bounds.size.width)
            
            if(val.nature.tag == customButtons.count - 1){
                val.nature.setimage(UIImage(named: "art.scnassets/addColor.png")?.resized(to: CGSize(width: CGFloat(width),height: CGFloat(width))),for: .normal)
            }
            
            else{val.nature.backgroundColor = val.color}
            
            val.nature.frame = CGRect(x: x,y: y + y*floor(CGFloat(Int(val.nature.tag)/6)) + width*floor(CGFloat(Int(val.nature.tag)/6)),width: width,height: width)
            // divisble by 7 for y and use the count for x and dont forget conatainer and scroll extra space
            val.nature.layer.cornerRadius = 0.5 * width
            

            val.nature.addTarget(self,action: #selector(chooseCustomColor),for: UIControl.Event.touchDown)
            
            val.nature.addTarget(self,action: #selector(buttonOut),for: UIControl.Event.touchUpInside)
            val.nature.addTarget(self,for: UIControl.Event.touchDragExit)
           
            colorContainer.addSubview(val.nature)
        }
    }
    

非常感谢您的时间和精力

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。