Как я могу установить значение var для моей текущей широты или долготы? Обновленный код предоставлен nikhil - PullRequest
0 голосов
/ 17 июня 2019

Мне нужно получить доступ к этим значениям координат вне класса, чтобы вычислить определенные уравнения, однако, когда я пытаюсь присвоить myLat для UserCoordinates.userLat или UserCoordinates.userLong, возникает ошибка.

Я пыталсяиспользуя как структуры и классы, так и глобальные переменные, но все они возвращали различные ошибки.

    public class UserCoordinates {
        static let  shared:UserCoordinates = UserCoordinates()
        var userLat: Double?
        var userLong: Double?

        func setUserLat(userLat: Double, userLong: Double) {
            self.userLong = userLong
            self.userLat = userLat
        }
        private init() {

        }
        func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]){
            guard let location = locations.last else {
                return
            }
            userLat = Double(location.coordinate.latitude)
            userLong = Double(location.coordinate.longitude)
        }

    }

sin(my latitude)
I want to take the sin of my latitude wherever I am how would I assign the value of userLat in the class/function to this sin calculation?

1 Ответ

0 голосов
/ 17 июня 2019

Вы не можете напрямую обращаться к переменной, используя класс, если она не является статической.Если вы хотите, чтобы что-то было одним экземпляром, вам следует использовать синглтон, проверьте код ниже.

public class UserCoordinates {
    static let  shared:UserCoordinates = UserCoordinates()
    var userLat: Double?
    var userLong: Double?

    func setUserLat(userLat: Double, userLong: Double) {
        self.userLong = userLong
        self.userLat = userLat
    }
    private init() {

    }
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]){
        guard let location = locations.last else {
            return
        }
        userLat = Double(location.coordinate.latitude)
        userLong = Double(location.coordinate.longitude)
    }

}
UserCoordinates.shared.setUserLat(userLat: 10.0, userLong: 10.0)
let myLat = UserCoordinates.shared.userLat
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...