Класс Firestore с функцией и возвращаемыми данными - PullRequest
0 голосов
/ 06 октября 2019

Как я могу создать класс, который я могу использовать для загрузки данных из Firestore и использовать его во всех моих классах?

Теперь у меня есть этот класс, но его Result of call to ... unused:

import Foundation
import Firebase

class FSLoadData {

    static var shared = FSLoadData()

    private func firestore(_ collection: String) -> CollectionReference {
        let firestore = Firestore.firestore().collection(collection)
        return firestore
    }

    func loadBookingData(_ id: String,
                     bookData: PhotoBooking?) -> PhotoBooking? {
        var newBook = bookData
        firestore(FSCollections.photoBooking).document(id).getDocument { (snapshot, error) in
            if let err = error {
                print(err.localizedDescription)
            } else {
                if let snap = snapshot, snap.exists {
                    if let book = PhotoBooking(dictionary: snap.data()!, id: snap.documentID) {
                        newBook = book
                    }
                }
            }
        }
        return newBook
    }
}

И я пытаюсь использовать это class в других классах в viewWillApear

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)
    FSLoadData.shared.loadBookingData(id, bookData: moreDetailBooking)
}

Но я получаю ошибку:

Результат вызова ... не используется

1 Ответ

1 голос
/ 06 октября 2019

Вам необходимо использовать завершение

func loadBookingData(_ id: String,
                 completion:@escaping(PhotoBooking?) -> ()) { 

    firestore(FSCollections.photoBooking).document(id).getDocument { (snapshot, error) in
        if let err = error {
            print(err.localizedDescription)
            completion(nil)
        } else {
            if let snap = snapshot, snap.exists {
                if let book = PhotoBooking(dictionary: snap.data()!, id: snap.documentID) {
                   completion(book)
                }
                else {
                   completion(nil)
                }
            }
            else {
                 completion(nil)
             }
        }
    } 
}

Вызов

loadBookingData("someValue") { data in 
    if let res = data {
      print(res)
    }
}  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...