FireStore - Swift не распознает возвращаемое значение в виде querysnapshot - PullRequest
0 голосов
/ 27 февраля 2019

Я прочитал «пожарный магазин» с возвращаемым значением QueryDocumentSnapshot, но функция его не перехватила.Данные в виде изображения и data () возвращаются, как показано ниже.Я не уверен, исходит ли проблема от формата отметки времени или нет.Попытка сделать его необязательным, но без помощи ... Было бы здорово, если бы вы могли взглянуть и дать советы

Ниже приведен результат запроса с функцией data ()

wow here bug ["owner_key": oQmUMHYAWaek5RkQSe2Ct9pABjl2, "invitation_type": wedding, "updated_date": 2019-02-26 17:00:00 +0000, "is_deleted": 0, "invite_id": DSDDSDDDRDS, "created_date": 2019-02-25 17:00:00 +0000]

Нижеэто данные в пожарном магазине

enter image description here

Эта функция для получения возврата из пожарного магазина

guard let invite = InvitationModel(document: change.document) else {
        print("bug in coding")
        return
    }

class InvitationModel {

var created_date: Timestamp
var updated_date: Timestamp
var invitation_card: URL? = nil
var invitation_type: String
var is_deleted: Bool
var owner_key: String
var invite_id: String

init?(document: QueryDocumentSnapshot) {
    let data = document.data()

    guard let created_date = data[Constants.invite_record.created_date] as? Timestamp else {
        return nil
    }
    guard let updated_date = data[Constants.invite_record.updated_date] as? Timestamp else {
        return nil
    }
    if let urlString = data[Constants.invite_record.invitation_card] as? String, let url = URL(string: urlString) {
        self.invitation_card = url
    } else {
        return nil
    }
    guard let invitation_type = data[Constants.invite_record.invitation_type] as? String else {
        return nil
    }
    guard let is_deleted = data[Constants.invite_record.is_deleted] as? Bool else {
        return nil
    }
    guard let owner_key = data[Constants.invite_record.owner_key] as? String else {
        return nil
    }

    self.created_date = created_date
    self.updated_date = updated_date
    self.invitation_type = invitation_type
    self.is_deleted = is_deleted
    self.owner_key = owner_key
    self.invite_id = document.documentID

}

}

Ниже функция для успешного чтения данных из пожарного магазина.Он возвращает данные, как указано выше

func loadMyInviting(count: Int, completion: @escaping ([MockInvite]) -> Void ) {
    print("current userid", _currentUser!)
    let inviteRef = db.collection("invitations")
    let query = inviteRef.whereField(Constants.invite_record.owner_key, isEqualTo: _currentUser!).order(by: "created_date", descending: true).limit(to: 10).addSnapshotListener { querySnapshot, error in
        guard let snapshot = querySnapshot else {
            print("Error listening for channel updates: \(error?.localizedDescription ?? "No error")")
            return
        }

        snapshot.documentChanges.forEach { change in
                            self.handleDocumentChange(change)
            let x = change.document.data()
            let y = InviteRecord(json: x)
            print("dhdanh", y)
        }
            completion(self.invitations)
    }

}
private func handleDocumentChange(_ change: DocumentChange) {
    print("wow here bug", change.document.data())
    guard let invite = InvitationModel(document: change.document) else {
        print("bug in coding")
        return
    }
    switch change.type {
    case .added:

        print("add is not supported")

    case .modified:
        print("modify is not supported")
    default:
        break
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...