我有以下代码,为Firbase数据库添加“Trip”
@IBAction func addButtonPressed(_ sender: UIButton) {
let ref = Database.database().reference().child("Users").child(user).child("Trips").childByAutoId()
if Double(distanceText.text!) != nil {
trip.distance = Double(distanceText.text!)!
} else {
print("invaliddouble")
}
if tripNameText != nil {
trip.title = tripNameText.text!
}
let tripType = bikeWalkToggle.titleForSegment(at: bikeWalkToggle.selectedSegmentIndex)
trip.transportType = tripType!
ref.child("Distance").setValue(trip.distance);ref.child("TripName").setValue(trip.title);ref.child("Transport").setValue(trip.transportType)
navigationController!.popViewController(animated: true)
}
问题是当我添加它时,当写入Distance的第一个值时,我的TableView在不同的UIViewController触发器中执行单独的数据库读取操作。
我将我的表格视图配置为显示每一行
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
cell.textLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping
cell.textLabel?.numberOfLines = 0
if commuteArray[indexPath.row].isFilled(){
cell.textLabel?.text = "\(commuteArray[indexPath.row].title!) by \(commuteArray[indexPath.row].transportType!) \n Distance: \(String(describing: commuteArray[indexPath.row].distance!)) miles"}
return cell
}
所以我最终获得的是为新项目显示的有效距离,但只是传输类型和标题的默认值。即使重新加载视图,它似乎也会留下这些空白,直到我关闭整个应用程序并重新打开它,强制从数据库中完全重新加载数据。
答案 0 :(得分:2)
您只需拨打setValue
ref.setValue([
"Distance": trip.distance,
"TripName": trip.title,
"Transport": trip.transportType
])