swift异步加载数据来不及赋值给全局变量怎么办?

我从Bmob云端数据库读数据,但是因为是异步读取的,所以来不及赋值给全局变量,程序就执行完了,请问这种情况要怎么保证先从云端数据库读完了数据,再执行后面的操作呢?


func searchAllData() {
              
            let query:BmobQuery = BmobQuery(className: "youhuiquan")
            
            
            query.findObjectsInBackground { (array, error) in
                
                var i =  0
                while(i<(array?.count)!){
                    let obj = array?[i] as! BmobObject
                    self.context = (obj.object(forKey: "title") as? String)!
                    self.url = (obj.object(forKey: "url") as? String)!
                    self.image_url =  (obj.object(forKey: "image_url") as? String)!
                    
                    
                    i = i + 1
                }
           
        }
     

    }
阅读 4k
3 个回答

异步要么用回调函数,要么使用 async/await。

Swift用回调的方式吧。

建议看一下 Swift 有关闭包的章节。

新手上路,请多包涵

用闭包回调,就像oc里用block一样。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进