问题:
应用程序因此错误代码崩溃。
修改:在初始化程序中调用fetchQuests
是导致此问题的原因。如果可能的话,请帮助我理解为什么调用此函数会导致我的应用程序崩溃。
由于未捕获的异常终止应用' InvalidPathValidation', 原因:'(child :)必须是非空字符串且不包含'。' '#' ' $' ' ['或者']''。
我已经使用一些打印语句对此功能进行了测试,并且在query.observeSingleEvent
期间发生了崩溃。
代码:
func fetchQuests(userType: UserType) {
quests = []
let uid = fetchUserOrPartnerUID(userType: userType)
// uid will return a String of user ID
print("uid's value:", uid)
let ref = Database.database().reference().child("questsByUID").child(uid)
let query = ref.queryOrdered(byChild: "creationDate")
query.observeSingleEvent(of: .value, with: { (snapshot) in
guard let allObjects = snapshot.children.allObjects as? [DataSnapshot] else {return}
allObjects.forEach({ (snapshot) in
guard let dictionary = snapshot.value as? [String : Any] else {return}
let quest = Quest(uid: uid, dictionary: dictionary)
quest.questID = snapshot.key
self.quests.append(quest)
})
self.delegate?.questsUpdated(quests: self.quests)
}) { (err) in
print("unable to fetch quest:", err)
}
}
来自uid的打印状态:
uid的价值:NbYbOIjwYNQ8flqqIUOTUrG1Obn2
已编辑:
我发现我的代码出了什么问题。它实际上不是导致此崩溃的fetchQuests
本身。它实际上在初始化程序中调用导致此问题的fetchQuests
。有人可以向我解释为什么我不能这样做作为答案吗?
init(userType: UserType, acceptedQuests: Bool, completedQuests: Bool) {
// self.fetchQuests(userType: userType)
self.questsAcceptedFilter = !acceptedQuests
self.questCompletedFilter = !completedQuests
print("fetching quests")
}