Swift & Firestore: AppDelegate и ViewControllers - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь получить доступ к своим данным в Firestore из моего приложения для iOS. Я установил Firebase / Firestore pod и собрал проект снова. Затем я вставил следующий код в AppDelegate.swift :

import Firebase

FirebaseApp.configure()

let db = Firestore.firestore()

Возвращаясь к моему ViewController , я попытался получить доступ к БД, чтобы получить некоторые данные:

    let services = db.collection("services").getDocuments { (snapshot, error) in
        if let error = error {
            print(error)
        }

        guard let docs = snapshot?.documents else { return }

        for doc in docs {
            print(doc.data())
        }
    }

Но я получаю следующую ошибку: Использование неразрешенного идентификатора 'db'

Если я перенесу следующую строку в свой ViewController, все будет в порядке:

let db = Firestore.firestore()

Есть идеи, почему?

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Создать новый класс под названием "GlobalFunctions.swift"

import Firebase

class GlobalFunctions: NSObject {
   static let db = Firestore.firestore()
}

Вы можете использовать этот класс во всем приложении, где бы вам ни понадобилось, как показано ниже:

let services = GlobalFunctions.db.collection("services").getDocuments { (snapshot, error) in
        if let error = error {
            print(error)
        }

        guard let docs = snapshot?.documents else { return }

        for doc in docs {
            print(doc.data())
        }
    }
0 голосов
/ 05 июля 2018

Поскольку любое объявленное свойство в классе может быть доступно только из объектов этого класса. Если вы не сделаете это статичным.

Так что, если вы хотите иметь доступ к вашей базе данных, у вас есть два варианта:

  • Объявите его как статическое свойство в классе AppDelegate.
  • Объявите это в классе контроллера представления, который абсолютно хорош.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...