swift 5.1 Xcode iOS中的firebase服务类

Posted

技术标签:

【中文标题】swift 5.1 Xcode iOS中的firebase服务类【英文标题】:firebase service class in swift 5.1 Xcode iOS 【发布时间】:2020-01-30 22:11:25 【问题描述】:

我创建了 firebase 服务类。在这个类中有一个函数getAllCategoryData(),它从firebase中获取所有数据。

class FirebaseService


    static public func getAllCategoryData(completion: @escaping ([CategoryModel]) ->Void )

    var catModel = [CategoryModel]()
    let databaseRef = Database.database().reference()
    catModel.removeAll()
    databaseRef.child("Category").queryOrderedByKey().observe(.value)  (dataSnapshot) in
        if let snapShot = dataSnapshot.children.allObjects as? [DataSnapshot]
        
            for snap in snapShot
            
                if let allData = snap.value as? [String:String]
                
                    let catName = allData["categoryName"]
                    let catImage = allData["categoryImage"]
                    catModel.append(CategoryModel(catName: catName!, catImg: catImage!))
                    //print("catName == \(catName!)")
                
            

        
        print(catModel)
        completion(catModel)
    
   
 

在此函数中,我试图获取所有类别数据,例如 categoryName 和 categoryImage。 并尝试将这些数据存储在我的 CategoryModel 类

class CategoryModel
 
   var categoryName : String?
   var categoryImage : String

   init(catName : String, catImg : String) 
      self.categoryName = catName
      self.categoryImage = catImg
   

在我的 HometableVC 中,我像这样调用这个函数并将所有数据附加到我的var data = [CategoryModel]()。所以我可以将这个 CategoryModel 数组显示到我的 tableview 中。但它给了我nil

FirebaseCommon.getAllCategoryData  (category) in
        self.data.append(contentsOf: category)
    
    print("======\(data.last?.categoryName)")

【问题讨论】:

【参考方案1】:

数据的任何使用都必须在闭包内发生:

FirebaseCommon.getAllCategoryData  (category) in
    self.data.append(contentsOf: category)
    print("======\(data.last?.categoryName)")

【讨论】:

那么我该如何使用该数组在表格视图中显示 要在更新数据后刷新表格视图,您正在寻找类似 @​​987654322@ 的内容。

以上是关于swift 5.1 Xcode iOS中的firebase服务类的主要内容,如果未能解决你的问题,请参考以下文章

更新到 Xcode 11 Swift 5.1 后出现 Google AdMob 错误

xcode 5.1 中的 iOS 模拟器崩溃

xcode 4.2 中的 iOS 5.1 (9B176) SDK 问题

Mountain Lion 上 xCode 4.5.1 中的 iOS 4 和 iOS 5 SDK

JSONKit 崩溃:iPad 视网膜 64 位设备模拟器中的 iOS 7 Xcode 5.1

XCode 4.4 iOS 5.1 模拟器问题