Я пытаюсь передать имя String в мой класс LocationManagerDelegate, чтобы он загружал обновленное местоположение в Firebase, но я получаю сообщение об ошибке «Аргумент передан для вызова без аргументов». Я довольно новичок в Swift, поэтому не уверен, как правильно это сделать.
struct ListView : View {
var name = ""
var geopoints : [String : GeoPoint]
@State var managerDelegate = LocationManagerDelegate(name: name)
@State var manager = CLLocationManager()
var body : some View {
VStack {
Text(name)
}.onAppear{
self.manager.delegate = self.managerDelegate
self.manager.requestAlwaysAuthorization()
}
}
}
class LocationManagerDelegate : NSObject, CLLocationManagerDelegate{
var name = ""
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
if status == .denied{
print("denied")
}
else{
print("authorized")
manager.requestLocation()
}
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
print(error.localizedDescription)
}
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let last = locations.last
let db = Firestore.firestore()
db.collection("locations").document("sharing").setData(["updates" : [name : GeoPoint(latitude: (last?.coordinate.latitude)!, longitude: (last?.coordinate.longitude)!)]], merge: true) {
(err) in
if err != nil {
print((err?.localizedDescription)!)
return
}
print("success")
}
}
}