获取数据时出错InvalidPathValidation

时间:2017-11-14 01:58:59

标签: swift firebase firebase-realtime-database

问题:

应用程序因此错误代码崩溃。 修改:在初始化程序中调用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")
}

0 个答案:

没有答案