【问题标题】:How can I save the data from a snapshot from Firebase using Swift 5?如何使用 Swift 5 从 Firebase 的快照中保存数据?
【发布时间】:2019-07-13 18:33:34
【问题描述】:

我正在尝试将从快照中获取的数据保存到不同的变量中。

我有一个名为 QuotesModel 的类,它具有 QuoteID 和 Quote 作为字符串变量。我正在尝试将引用的快照保存到该类中的 Quote 变量中。

class QuotesModel:NSObject {
    var QuoteID:String = ""
    var quote:String = ""
}



var rootref: DatabaseReference?
var QuotesArr = [QuotesModel]()

override func viewDidLoad() {
    rootref = Database.database().reference()
    let ref = rootref!.child("HelloWorld")
    super.viewDidLoad()

ref.observe(.childAdded, with: {(snapshot) in
    print(snapshot)
    guard let dictionary = snapshot.value as? [String : AnyObject] 
    else {
            return
     }
        let Obj = QuotesModel()
        Obj.QuoteID = snapshot.key
        Obj.quote = (dictionary["Test1"] as? String)!
        self.QuotesArr.append(Obj)
    }, withCancel: nil)
}

【问题讨论】:

    标签: ios swift firebase firebase-realtime-database


    【解决方案1】:

    让我们把它清理干净,让它也变得 Swifty。

    首先定义你的类和数组。我们将向类添加逻辑以将快照“分解”为它的组件,并添加一些错误检查以防引用为 nil。

    class QuoteModel {
        var quoteID = ""
        var quote = ""
    
        init(withSnapshot: DataSnapshot) {
            self.quoteId = withSnapshot.key
            self.quote = withSnapshot.value as? String ?? "No Quote"
        }
    }
    

    然后是对我们的根数据库和数组的引用。请注意,通常最好的做法是使用“self”来引用类变量。并且小写通常用于 vars,大写用于类定义。

    var rootref: DatabaseReference?
    var quotesArr = [QuoteModel]()
    

    然后是遍历所有引号并填充数组的代码

    func iterateOverAllQuotes() {
        self.rootref = Database.database().reference()
        let ref = self.rootref!.child("HelloWorld")
        super.viewDidLoad()
    
        ref.observe(.childAdded, with: { snapshot in
            let aQuote = QuoteModel(withSnapshot: snapshot)
            self.quotesArr.append(aQuote)
        })
    }
    

    【讨论】:

      猜你喜欢
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 2016-05-13
      • 1970-01-01
      • 1970-01-01
      • 2017-03-05
      相关资源
      最近更新 更多