ios – 从一个从firebase中检索数据的闭包中获取数据

ios – 从一个从firebase中检索数据的闭包中获取数据,第1张

概述我正在尝试从Firebase检索数据并将该数据存储在检索该数据的闭包之外. var stringNames = [String] () ref?.observeEventType(.Value, withBlock: { snapshot in var newNames: [String] = [] for item in snapshot.children 我正在尝试从Firebase检索数据并将该数据存储在检索该数据的闭包之外.

var stringnames = [String] ()    ref?.observeEventType(.Value,withBlock: { snapshot in        var newnames: [String] = []        for item in snapshot.children {            if let item = item as? FIRDataSnapshot {                let postDict = item.value as! [String: String]                newnames.append(postDict["name"]!)            }        }        stringnames = newnames    })    print(stringnames)

stringnames返回空,但是当我从闭包内打印时,它有正确的数据.非常感谢任何帮助,谢谢!

解决方法 那是因为当您从Firebase获取数据时,调用是异步的.你可以做什么:

选项1 – 在闭包内设置逻辑(就像你在封闭内部打印var一样).

选项2 – 定义您自己的闭包,用于接收您的数据,如:

func myMethod(success:([String])->VoID){    ref?.observeEventType(.Value,withBlock: { snapshot in        var newnames: [String] = []        for item in snapshot.children {            if let item = item as? FIRDataSnapshot {                let postDict = item.value as! [String: String]                newnames.append(postDict["name"]!)            }        }        success(newnames)    })}

选项3 – 使用委托模式

protocol MyDelegate{     func dIDFetchData(data:[String])}class MyController : UIVIEwController,MyDelegate{    func myMethod(success:([String])->VoID){        ref?.observeEventType(.Value,withBlock: { snapshot in           var newnames: [String] = []           for item in snapshot.children {               if let item = item as? FIRDataSnapshot {                   let postDict = item.value as! [String: String]                   newnames.append(postDict["name"]!)               }            }            self.dIDFetchData(newnames)        })    }    func dIDFetchData(data:[String]){        //Do what you want    }}
总结

以上是内存溢出为你收集整理的ios – 从一个从firebase中检索数据的闭包中获取数据全部内容,希望文章能够帮你解决ios – 从一个从firebase中检索数据的闭包中获取数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1059461.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存