Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 使用存储在Firebase数据库中的数据填充UITableView_Swift_Uitableview_Firebase_Firebase Realtime Database - Fatal编程技术网

Swift 使用存储在Firebase数据库中的数据填充UITableView

Swift 使用存储在Firebase数据库中的数据填充UITableView,swift,uitableview,firebase,firebase-realtime-database,Swift,Uitableview,Firebase,Firebase Realtime Database,我的iPhone应用程序中有一个UITableVIew,它使用数组填充每个单元格,但问题是如何使用从firebase数据库检索的值填充数组: func retData(){ rootRef.child("users").child("Test").observeEventType(.Value){ (snap: FIRDataSnapshot) in } } var no1 = ["3","6","3","4","5","20","34","34"] 表代码

我的iPhone应用程序中有一个UITableVIew,它使用数组填充每个单元格,但问题是如何使用从firebase数据库检索的值填充数组:

func retData(){
    rootRef.child("users").child("Test").observeEventType(.Value){
        (snap: FIRDataSnapshot) in
    }
}

 var no1 = ["3","6","3","4","5","20","34","34"]
表代码:

  func tableView(tableView: UITableView, cellForRowAtIndexPath     
 indexPath: NSIndexPath) -> UITableViewCell {

 let cell1 = self.h_table.dequeueReusableCellWithIdentifier("cell1",    
 forIndexPath: indexPath) as! Hole_Cell

    cell1.s_label.text = usersArray[indexPath.row]
firebase数据结构:

 --Users
       --Test: 1
       --Test1: 2
       --Test2: 3
       --Test4: 4 
试试这个:

var usersArray: [String]?

func retData() {
    rootRef.child("users").observeEventType(.Value, withBlock: { snapshot in


        usersArray = [String]()
        for user in snapshot.allObjects as! [FIRDataSnapshot] {
          let userString = user.value as? String
          usersArray?.append(userString!)
        }

    })
}
var usersArray = [String]()

func retData() {
    rootRef.child("users").observeEventType(.Value, withBlock: { snapshot in

        let usersDict = snapshot.value as! [String:String]
        self.usersArray= Array(usersDict.values)
        self.tableView.reloadData()
       }

    })
}
***编辑并尝试以下操作:

var usersArray = [String]()

func retData() {
    rootRef.child("users").observeEventType(.Value, withBlock: { snapshot in

        let usersDict = snapshot.value as! [String:String]
        self.usersArray= Array(usersDict.values)
        self.tableView.reloadData()
       }

    })
}
***再次编辑:当用户没有数据时,在闭包中添加此项

        if let _ = snapshot.value as? NSNull {
          return
        } else {
           let usersDict = snapshot.value as! [String:String]
           self.usersArray= Array(usersDict.values)
           self.tableView.reloadData()
        }
试试这个:

var usersArray: [String]?

func retData() {
    rootRef.child("users").observeEventType(.Value, withBlock: { snapshot in


        usersArray = [String]()
        for user in snapshot.allObjects as! [FIRDataSnapshot] {
          let userString = user.value as? String
          usersArray?.append(userString!)
        }

    })
}
var usersArray = [String]()

func retData() {
    rootRef.child("users").observeEventType(.Value, withBlock: { snapshot in

        let usersDict = snapshot.value as! [String:String]
        self.usersArray= Array(usersDict.values)
        self.tableView.reloadData()
       }

    })
}
***编辑并尝试以下操作:

var usersArray = [String]()

func retData() {
    rootRef.child("users").observeEventType(.Value, withBlock: { snapshot in

        let usersDict = snapshot.value as! [String:String]
        self.usersArray= Array(usersDict.values)
        self.tableView.reloadData()
       }

    })
}
***再次编辑:当用户没有数据时,在闭包中添加此项

        if let _ = snapshot.value as? NSNull {
          return
        } else {
           let usersDict = snapshot.value as! [String:String]
           self.usersArray= Array(usersDict.values)
           self.tableView.reloadData()
        }

检查我最近的问题,基本上是一样的。结帐,非常有用

我使用了一个带有表视图和原型单元格的ViewController。这对我来说很有用:

import Firebase
import FirebaseDatabaseUI

class LinksViewController: UIViewController, UITableViewDelegate {

var dataSource: FirebaseTableViewDataSource?
var ref = FIRDatabase.database().reference()
@IBOutlet weak var tableView: UITableView!

override func viewDidLoad() {
  super.viewDidLoad()

dataSource = FirebaseTableViewDataSource.init(query: myQuery(),prototypeReuseIdentifier: "<Your-Identifier>", view: self.tableView)

dataSource?.populateCellWithBlock { (cell: UITableViewCell, obj: NSObject) -> Void in

//Populate your Cell here
}
       tableView.dataSource = dataSource
       tableView.delegate = self


 }
  }
导入Firebase
导入FirebaseDatabaseUI
类链接ViewController:UIViewController、UITableViewDelegate{
var数据源:FirebaseTableViewDataSource?
var ref=FIRDatabase.database().reference()
@IBVAR表格视图:UITableView!
重写func viewDidLoad(){
super.viewDidLoad()
dataSource=FirebaseTableViewDataSource.init(查询:myQuery(),prototypeReuseIdentifier:,视图:self.tableView)
dataSource?.populateCellWithBlock{(单元格:UITableViewCell,obj:NSObject)->中的Void
//在这里填充您的单元格
}
tableView.dataSource=数据源
tableView.delegate=self
}
}

请注意,
myQuery
基本上是您的第一行。

检查我的最新问题,基本上是相同的内容。结帐,非常有用

我使用了一个带有表视图和原型单元格的ViewController。这对我来说很有用:

import Firebase
import FirebaseDatabaseUI

class LinksViewController: UIViewController, UITableViewDelegate {

var dataSource: FirebaseTableViewDataSource?
var ref = FIRDatabase.database().reference()
@IBOutlet weak var tableView: UITableView!

override func viewDidLoad() {
  super.viewDidLoad()

dataSource = FirebaseTableViewDataSource.init(query: myQuery(),prototypeReuseIdentifier: "<Your-Identifier>", view: self.tableView)

dataSource?.populateCellWithBlock { (cell: UITableViewCell, obj: NSObject) -> Void in

//Populate your Cell here
}
       tableView.dataSource = dataSource
       tableView.delegate = self


 }
  }
导入Firebase
导入FirebaseDatabaseUI
类链接ViewController:UIViewController、UITableViewDelegate{
var数据源:FirebaseTableViewDataSource?
var ref=FIRDatabase.database().reference()
@IBVAR表格视图:UITableView!
重写func viewDidLoad(){
super.viewDidLoad()
dataSource=FirebaseTableViewDataSource.init(查询:myQuery(),prototypeReuseIdentifier:,视图:self.tableView)
dataSource?.populateCellWithBlock{(单元格:UITableViewCell,obj:NSObject)->中的Void
//在这里填充您的单元格
}
tableView.dataSource=数据源
tableView.delegate=self
}
}

请注意,
myQuery
基本上就是您的第一行。

您能告诉我们您的数据在firebase中是如何构造的吗?更新了包含数据结构的问题建议:或者您能告诉我们您的数据在firebase中是如何构造的吗?更新了包含数据结构的问题建议:或者它标记了一个错误值类型“FIRDataSnapshot”没有成员“AllObject”@crispy2k12请尝试我上面提出的新解决方案。我的错误索引超出范围,它们是否可以用来指定将在array@crispy2k12检查字典是否为空。创建usersDict后,添加以下行:print(“Dictionary:(usersDict)”)@crispy2k12 hmm。出于某种原因,您没有提取任何数据。确保在“用户”节点上有数据。从上面的数据来看,似乎是这样。我还更新了我的答案,以说明用户没有数据时的情况。它标记了一个错误“值类型”FIRDataSnapshot“没有成员”AllObject@crispy2k12请尝试我上面提出的新解决方案。我的错误索引超出范围,它们是否可以用于指定将在array@crispy2k12检查字典是否为空。创建usersDict后,添加以下行:print(“Dictionary:(usersDict)”)@crispy2k12 hmm。出于某种原因,您没有提取任何数据。确保在“用户”节点上有数据。从上面的数据来看,似乎是这样。我还更新了我的答案,以说明用户没有数据时的情况。