Я пытаюсь получить autoId, записанный в дочернем узле оповещения, и превратить его в строку, чтобы получить этот autoId из узла вопросов, чтобы получить информацию внутри него - мой код запускается, но не печатается/ work
(текущий пользовательский autoId является первым дочерним элементом узла оповещения, а userId является строкой, полученной из "objectId" / вторым дочерним элементом вопросов).Это мой код:
@IBOutlet weak var statementAnswered: UILabel
@IBOutlet weak var number1Label: UIButton!
@IBOutlet weak var number2Label: UIButton!
@IBOutlet weak var number3Label: UIButton!
@IBOutlet weak var number4Label: UIButton!
guard let currentUser = Auth.auth().currentUser?.uid else { return }
let ref = Database.database().reference()
//enter alert node to get the new Id under the current user node
let userRef = ref.child("alert").child(currentUser)
userRef.observe(.childAdded, with: { (snapshot) in
let uniqueKey = snapshot.key
print(uniqueKey)
guard let senderDetails = snapshot.childSnapshot(forPath: "from").value as? String else { return }
guard let userID = snapshot.childSnapshot(forPath: "objectID").value as? String else { return }
print(senderDetails)
print(userID)
let questionNotification = ref.child("questions").child(senderDetails).child(userID)
questionNotification.observeSingleEvent(of: .value, with: { (snapshot) in
let value = snapshot.value as? NSDictionary
let statement = value?["statement"] as! String
let number1 = value?["number 1"] as! String
let number2 = value?["number 2"] as! String
let number3 = value?["number 3"] as! String
let number4 = value?["number 4"] as! String
print(statement)
print(number1)
print(number2)
print(number3)
print(number4)
self.statementAnswered.text = question
self.number1Label.setTitle(number1, for: .normal)
self.number2Label.setTitle(number2, for: .normal)
self.number3Label.setTitle(number3, for: .normal)
self.number4Label.setTitle(number4, for: .normal)
})
}, withCancel: nil)
Вот фрагмент структуры JSON:
"alert" : {
"FjS4wUpXAUa5aWwXkjvujHxE4He2" : {
"-La2uIRfXs15WP8bEfQo" : {
"from" : "Gmg1ojNoBiedFPRNSL4sBZz2gSx2",
"objectId" : "-La2uIRPzNXnamX4QLER",
"timestamp" : 1552696293
}
}
},
"questions" : {
"Gmg1ojNoBiedFPRNSL4sBZz2gSx2" : {
"-La2uIRPzNXnamX4QLER" : {
"number 1" : "4444",
"number 2" : "1111",
"number 3" : "2222",
"number 4" : "3333",
"statement" : "favourite number",
"selected" : "FjS4wUpXAUa5aWwXkjvujHxE4He2"
}
}
},
Благодарим за любую помощь!
ОБНОВЛЕНИЕ:
Я обновил код, и на консоли он выводит следующее (autoId пользователей в приложении):
[Snap (CjeP35ceAQZJuUPhm7U1eF3Yq4F3) 1, Snap
(FjS4wUpXAUa5aWwXkjvujHxE4He2) 1, Snap (FoFQDAGGX9hntBiBdXYCBHd8yas2)
1, Snap (PqMkClaPM3W8k7ZSgzAHb3yne5D3) 1]
[Snap (CjeP35ceAQZJuUPhm7U1eF3Yq4F3) 1, Snap
(FjS4wUpXAUa5aWwXkjvujHxE4He2) 1, Snap (FoFQDAGGX9hntBiBdXYCBHd8yas2)
1, Snap (PqMkClaPM3W8k7ZSgzAHb3yne5D3) 1]
[Snap (CjeP35ceAQZJuUPhm7U1eF3Yq4F3) 1, Snap
(FjS4wUpXAUa5aWwXkjvujHxE4He2) 1, Snap (FoFQDAGGX9hntBiBdXYCBHd8yas2)
1, Snap (PqMkClaPM3W8k7ZSgzAHb3yne5D3) 1]
(я буду продолжать пытаться заставить мои контрольные точки работать, чтобы увидеть, что не так, иобновите его здесь, если он работает)
Заранее спасибо
ОБНОВЛЕНИЕ:
Я изменил структуру базы данных, чтобы "вопросы" не сохранялисьпод autoId currentUser (человек, отвечающий на вопросы), и вместо этого создается просто случайный идентификатор, и он работает, хотя я не думаю, что это самый эффективный способ сделать это