我有一個應用程式,用戶可以在其中創建任務供他們全天完成。類似于待辦事項串列。我的 firebase 資料庫中有一個"Tasks"在此節點下呼叫的節點,是添加所有任務的地方。
這是一個視覺示例:

我當然能夠將資料添加到 firebase 資料庫。這是代碼:
taskTitle = titleTextField.text!
taskDescription = notesTextView.text
var tasks: [String: Any] = [:] // declaring empty dictionary
tasks["Description"] = taskDescription
tasks["Due Date"] = date_time
database.child("Tasks").child(taskTitle).setValue(tasks)
因此,如果用戶創建一個新任務,讓我們說他們創建"TASK 4", "TASK 5","TASK 6"它看起來像這樣:

這是杰森資料列印:
Tasks = {
"Task 1" = {
Description = Abcderf;
"Due Date" = "Nov 17, 2021, 19:11";
};
"Task 2" = {
Description = Abcderf;
"Due Date" = "Nov 17, 2021, 19:11";
};
"Task 3" = {
Description = Abcderf;
"Due Date" = "Nov 17, 2021, 19:11";
};
"Task 4" = {
Description = Notes;
"Due Date" = "";
};
"Task 5" = {
Description = Run;
"Due Date" = "Nov 24, 2021, 12:11";
};
"Task 6" = {
Description = Run;
"Due Date" = "Nov 24, 2021, 12:11";
};
};
}
這是列印此快照的代碼:
var postRef: DatabaseReference? // declared outside of viewDidLoad()
var refHandle: DatabaseHandle? // declared outside of viewDidLoad()
//set the db ref
postRef = Database.database().reference()
//getting values from db
refHandle = postRef?.observe(DataEventType.value, with: { snapshot in
self.listOftasks.append("")
})
我只是在 處設定一個斷點self.listoftasks.append(""),然后在控制臺中我正在做"po snapshot",然后列印 JSON 物件。
我需要做什么,只讀取任務的名稱?
uj5u.com熱心網友回復:
首先,如果你只關心任務,你應該只Tasks加載節點而不是加載整個資料庫
tasksRef = Database.database().reference("Tasks")
接下來,您需要在完成處理程式中遍歷子節點:
refHandle = tasksRef?.observe(DataEventType.value, with: { snapshot in
for taskSnapshot in snapshot.children {
print(taskSnapshot.key)
}
})
為此,我還建議查看之前關于在 swift 中回圈子節點的一些問題,例如:
請記住:雖然上面只列印了任務的鍵,但它仍然會檢索每個節點的值。如果您不需要代碼中的值,請考慮在資料庫中保留一個單獨的節點,其中僅包含任務名稱(通常是true值,因為路徑需要存在值)以減少使用的帶寬。
最后,擁有這樣的順序鍵是 Firebase 中常見的反模式,所以我建議閱讀這篇經典文章:最佳實踐:Firebase 中的陣列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359214.html
