Ios 如何使用Swift 5保存Firebase快照中的数据?

Ios 如何使用Swift 5保存Firebase快照中的数据?,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,我试图将从快照中获取的数据保存到不同的变量中 我有一个名为QuotesModel的类,它将QuoteID和Quote作为字符串变量。我试图将quote的快照保存到该类中的quote变量 class QuotesModel:NSObject { var QuoteID:String = "" var quote:String = "" } var rootref: DatabaseReference? var QuotesArr = [QuotesModel]() over

我试图将从快照中获取的数据保存到不同的变量中

我有一个名为QuotesModel的类,它将QuoteID和Quote作为字符串变量。我试图将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)
}


让我们把它清理干净,让它也快一点

首先定义类和数组。我们将向类中添加逻辑,以将快照“分解”到其组件中,并在引号为nil的情况下添加一些错误检查

class QuoteModel {
    var quoteID = ""
    var quote = ""

    init(withSnapshot: DataSnapshot) {
        self.quoteId = withSnapshot.key
        self.quote = withSnapshot.value as? String ?? "No Quote"
    }
}
然后是对根数据库和数组的引用。请注意,使用“self”来引用类变量通常是最佳做法。小写通常用于变量,大写用于类定义

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

让我们把它清理干净,让它也快一点

首先定义类和数组。我们将向类中添加逻辑,以将快照“分解”到其组件中,并在引号为nil的情况下添加一些错误检查

class QuoteModel {
    var quoteID = ""
    var quote = ""

    init(withSnapshot: DataSnapshot) {
        self.quoteId = withSnapshot.key
        self.quote = withSnapshot.value as? String ?? "No Quote"
    }
}
然后是对根数据库和数组的引用。请注意,使用“self”来引用类变量通常是最佳做法。小写通常用于变量,大写用于类定义

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