Я прочитал «пожарный магазин» с возвращаемым значением 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]
Нижеэто данные в пожарном магазине
Эта функция для получения возврата из пожарного магазина
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
}
}