Я довольно новичок в Firebase, читал документы и пробовал несколько решений. Как я могу получить данные "friendID" в следующей структуре. Мне нужно получать эти данные только один раз при каждой загрузке этого представления.
![enter image description here](https://i.stack.imgur.com/WQnQC.png)
А вот и моя последняя попытка.
let profileDB = Database.database().reference().child("Profiles")
profileDB.child(userID!).child("friends").observeSingleEvent(of: .value, with: {
(snapshot) in
let dbValue = snapshot.value as? NSDictionary
if let friend = dbValue?["friendID"] {
print(friend)
}
})
UPDATE
Если я сделаю это:
let dbValue = snapshot.value as? NSDictionary
print(dbValue)
OR
let dbValue = snapshot.value
print(dbValue)
Тогда я получаю это, но не знаю, как получить доступ к клавише friendID
.
Optional({
"-LWS8PMygzX2Lk-hOGvT" = {
friendID = qvhN5UMnbOWvfhhN4RAHtwjLuwG2;
};
"-LWS8PNFdUGMI1gHO8TF" = {
friendID = w3f7yLMdArUrnKLWR1nyE7ko1ds1;
};
})
Если я перейду на это, то это сработает. Но не лучше ли первый метод наблюдения, описанный выше, для одноразовых поисков?
profileDB.child(userID!).child("friends").observe(.childAdded) {
(snapshot) in
let dbValue = snapshot.value as! Dictionary<String,String>
if let friend = dbValue["friendID"] {
print(friend)
}
}
Мой последний вопрос будет, как только я получу этот идентификатор друга, как я могу загрузить их информацию? Буду ли я снова вызывать БД внутри этого наблюдателя? Это похоже на работу:
let profileDB = Database.database().reference().child("Profiles")
profileDB.child(userID!).child("friends").observe(.childAdded) {
(snapshot) in
let dbValue = snapshot.value as! Dictionary<String,String>
if let friendID = dbValue["friendID"] {
print(friendID)
let friendProfileDB = Database.database().reference().child("Profiles")
friendProfileDB.child(friendID).observeSingleEvent(of: .value, with: {
(snapshot) in
let friendDBValue = snapshot.value as? NSDictionary
if let name = friendDBValue?["name"] {
print(name)
}
})
}
Любая помощь будет отличной, заранее спасибо!