FirestoreSwift @DocumentID не компилируется в Xcode 11 - PullRequest
0 голосов
/ 14 января 2020

Я использую модуль FirebaseFirestoreSwift в своем проекте Xcode 11, но не могу скомпилировать следующую структуру. Я получаю сообщение об ошибке:

Тип свойства 'String' не соответствует свойству свойства wrappedValue его типа оболочки 'DocumentID'

import FirebaseFirestoreSwift

struct CustomerLocation: Codable {
    @DocumentID var id: String  // <- error is here
    let contactEmail: String
    let contactName: String
    let contactPhoneNumber: String
    let serviceContactEmail: String
}

Я делая простое извлечение и декодирование документа следующим образом:

func fetchCustomerLocation(path: String) {
   firestore.document(path).getDocument{ (document, error) in
      guard error == nil, let document = document, document.exists else {
         print("Error retrieving customer location document. \(error!.localizedDescription)")
         return
      }

      do {
         let result = try document.data(as: CustomerLocation.self)
         print(result!)
      }
      catch let error {
         print("Error retrieving parsing location document. \(error.localizedDescription)")
      }
  }
}

Я бы предпочел не передавать [String: Any] в init.

Есть идеи?

Спасибо

Ответы [ 2 ]

1 голос
/ 16 января 2020

Оболочка свойства @DocumentID имеет необязательный init как:

public struct DocumentID<Value: DocumentIDWrappable & Codable & Equatable>:
    DocumentIDProtocol, Codable, Equatable {
    var value: Value?

    public init(wrappedValue value: Value?) {
      self.value = value
    }

    ...

Так что предложение sllopis решило мою проблему. Спасибо

0 голосов
/ 31 марта 2020
db.collection("entidades").addSnapshotListener { (querySnapshot, error) in
    guard let querySnapshot = querySnapshot else { return }
    self.entidades = querySnapshot.documents.compactMap { document -> Entidad? in 
        try? document.data(as: Entidad.self)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...