# #swift #firebase #google-cloud-firestore
Вопрос:
Нужна небольшая помощь с Swift и Firebase.
Этот код в getFriendlyLocation.swift …
import UIKit
import CoreLocation
import Firebase
import FirebaseFirestore
class getfriendlyLocation: NSObject {
let geocoder = CLGeocoder()
var placemark: CLPlacemark!
var countryCode: String!
var db: Firestore!
func initfriendlyLocation(lat:Double, lng:Double) {
let location = CLLocation(latitude: lat, longitude: lng)
geocoder.reverseGeocodeLocation(location) { (placemarks, error) in
self.processResponse(withPlacemarks: placemarks, error: error)
self.db.collection("main").addDocument(data: ["Country":"US"]) { err in
if let err = err {
print("Error adding document: (err)")
} else {
print("OK")
}
}
}
}
}
…выдает ошибку «Фатальная ошибка: неожиданно найдено ноль при неявном развертывании необязательного значения» в строке addDocument ().
Точно такой же блок кода отлично работает вне закрытия.
Блок processResponse сейчас ничего не делает, просто проверяет, возвращает ли он значения или нет, что он и делает.
Я вызываю getfriendlyLocation из ViewController.swift
var friendlyLoc = getfriendlyLocation()
friendlyLoc.initfriendlyLocation(lat: lat, lng: lng)
Что отличается, когда этот блок кода находится внутри закрытия от внешнего?
Спасибо!
Добавление…
func processResponse(withPlacemarks placemarks: [CLPlacemark]?, error: Error?) {
if let error = error {
print("ERROR")
} else {
print("OK")
}
}
}
Комментарии:
1. Вам, вероятно, нужно показать
processResponse
Ответ №1:
Проблема в том, что ваша db
переменная равна нулю. Вы должны это сделать self.db = Firestore.firestore()
, прежде чем использовать его. Вы можете поместить его в любое место перед вызовом addDocument.