【发布时间】:2017-10-01 18:20:28
【问题描述】:
我的 viewDidLoad 函数中有一个 observeSingleEvent,我想用 .childAdded 将其更改为观察,以便它会不断监听并在对象添加到数据库时添加对象。
这是从 firebase 读取的代码:
let parentRef = Database.database().reference().child("Recipes")
parentRef.observeSingleEvent(of: .value, with: { snapshot in
// PROCESSES VALUES RECEIVED FROM SERVER
if ( snapshot.value is NSNull ) {
// DATA WAS NOT FOUND
print("– – – Data was not found – – –")
} else {
// DATA WAS FOUND
for user_child in (snapshot.children) {
let user_snap = user_child as! DataSnapshot
let dict = user_snap.value as! [String: String?]
// DEFINE VARIABLES FOR LABELS
let recipeName = dict["Name"] as? String
let recipeDescription = dict["Description"] as? String
food.append(Element(name: recipeName!, description: recipeDescription!))
self.tableView.reloadData()
}
}
})
我现在遇到的另一个问题(除了它只加载一次)是,每当我转到应用程序中的另一个视图然后返回时,它会再次读取所有内容,因此我的 tableView 中的所有内容都重复,这种情况还会发生吗与观察?
编辑:
这是我的数据库的样子:
Recipes
-Kv7FAqgLtDrRoyGd-99
Description: "food description"
Name: "food name"
-KvBuzMUnIQXn8gpG2WL
Description: "food description2"
Name: "food name2"
-KvH6yYeJaThK7oP8xBj
Description: "food description3"
Name: "food name3"
【问题讨论】:
-
只需写
parentRef.observe(value, ....)- 这将使查询连续。 -
@matiastofteby 谢谢,它有效,但是它仍然复制对象,每当运行 viewDidLoad 时它都会一遍又一遍地重新加载所有内容,我该如何解决这个问题?
标签: ios swift firebase firebase-realtime-database