0

The following code passes variables to destVC, and it works. But when I close destVC the variables clean up. Is there any way to save these variables?

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

              if let destVC = segue.destination as? ViewControllerGpsMaps {

                if (baseCoordinatesSaveNow == true) {

                    destVC.baseCoordinatesSaveNow = true
                }
                destVC.actualDestinationLatitude = Double(waypointlatitude.text!)
                destVC.actualDestinationLongitue = Double(waypointlongitude.text!)
        }
    }

thomas
  • 11
  • 2
  • Have your tried with UserDefaults - https://medium.com/better-programming/userdefaults-in-swift-4-d1a278a0ec79? – Ram Mar 13 '20 at 09:02

2 Answers2

2

You can use UserDefaults like below:

To save the data use below code(on source VC):

UserDefaults.standard.set(Double(waypointlatitude.text!), forKey: "latitude")  

To retrieve the data use below code(on destination VC):

 UserDefaults.standard.double(forKey: "latitude")

In a similar way you can do for longitude.

To remove data use below code:

UserDefaults.standard.removeObject(forKey: "latitude")
Daljeet
  • 1,573
  • 2
  • 20
  • 40
0

There are two simple methods: Method 1: Save data in user defaults like this:

//To save data
   UserDefaults.standard.set(waypointlatitude.text, forKey: "lat")
//To get data
   let lat = UserDefaults.standard.value(forKey: "lat")

Method 2: Save data in global variables. Make class for global and take shared instance like this:

Global class:

class global: NSObject {
    static let shared = global()
    var lat: Double?
}

To set data in global:

global.shared.lat = Double(waypointlatitude.text ?? 0.0)

To get data from global:

let lat = global.shared.lat

global can be accessed anywhere using shared instance.

Zain
  • 153
  • 9