Одно свойство внезапно становится нулевым после вызова блока завершения метода firebase
Проблема: я вызываю объект Message из базы данных Firebase, и он правильно возвращает все мои свойства. Однако после блока завершения одно из значений возвращает nil, которое является свойством fromId.
Приведенный ниже код для развернутого условного свойства fromId выводит "Нет данных", в то время как все остальные мои свойства печатаются правильно и показывают наличие данных.
FirebaseSystem.system.getMessage(messageID, completion: { (messageObject) in
print(messageObject.text)
print(messageObject.timestamp)
print(messageObject.imageUrl)
if let fromID = messageObject.fromId {
print(fromID)
} else {
print("No Data")
}
Однако перед блоком завершения все значения правильно выводятся ниже из каждого цикла:
(ключ: "toAddictionID", значение: -KyV4lz1xNeoN1IhdMe)
(ключ: "fromID", значение: RvLlALPx9TUdSfBYp0CZ6z6mQpl)
(ключ: "метка времени", значение: 1510549542.52683)
(ключ: "imageUrl", значение: https://firebasestorage.googleapis.com/
/** Gets the Message object for the specified message id */
func getMessage(_ messageID: String, completion: @escaping (Message) -> Void) {
MESSAGE_REF.child(messageID).observeSingleEvent(of: .value, with: { (snapshot) in
guard let dictionary = snapshot.value as? [String: Any] else {
print("Firebase getMessage : Could not find message object")
return
}
for values in dictionary {
print(values)
}
completion(Message(dictionary: dictionary))
})
}
Модель класса ниже:
class Message: NSObject {
var fromId: String?
var text: String?
var timestamp: NSNumber?
var toAddictionID: String?
var imageUrl: String?
init(dictionary: [String: Any]) {
if let fromId = dictionary["fromId"] as? String {
self.fromId = fromId
}
if let text = dictionary["text"] as? String {
self.text = text
}
if let toAddictionID = dictionary["toAddictionID"] as? String {
self.toAddictionID = toAddictionID
}
if let timestamp = dictionary["timestamp"] as? NSNumber {
self.timestamp = timestamp
}
if let imageUrl = dictionary["imageUrl"] as? String {
self.imageUrl = imageUrl
}
Я не уверен, в чем проблема, и любое понимание поможет!
1 ответ
Неважно, это была просто опечатка!
Предполагалось, что это fromID вместо fromId. Я не против, если этот пост будет удален, потому что я чувствую смущение.