Firebase с Swift неоднозначно использует наблюдаемость-тип
Я вырывал свои волосы из-за этого. Переходя ко всем страницам со связанными инцидентами и несколькими учебниками, я не нахожу здесь ничего плохого в своем коде, но каким-то образом он не потерпит неудачу, только если я распечатываю значения (что работает) или назначаю их как! NSArray, который затем дает мне пустой массив.
печать снимков
( friend1,
friend2,
friend3
)
Я попробовал snapshot.value.values ... без игры в кости. Я пытался поиграть с распаковкой... без игры в кости. и это моя последняя попытка:
friendsList = [String]()
ref.observeSingleEventOfType(.Value) { (snapshot) -> Void in
if snapshot.value is NSNull {
} else {
for child in snapshot {
self.friendsList.append(child.value)
}
}
}
что дает мне неоднозначную вещь снова.
2 ответа
Просто некоторые ошибки кодирования
Удалить: (снимок)-> Void
Изменение: дочерний элемент в снимке как снимок не является последовательностью, тогда как snapshot.children
Я предполагаю, что вы хотите сохранить имя друзей в виде строки, а имя - это ключ в вашей структуре. Поэтому измените self.friendsList.append (child.value) на
let name = child.value["name"] as? String
friendsList.append(name!)
Вот исправленный код:
var friendsList = [String]()
ref.observeSingleEventOfType(.Value, withBlock: { snapshot in
if snapshot.value is NSNull {
} else {
for child in snapshot.children {
let name = child.value["name"] as? String
friendsList.append(name!)
}
print("\(friendsList)")
}
})
ref.observeSingleEvent(of: .value, with: { (snapshot) -> Void in
})
Работа для меня, Xcode 8.3.2