-3

Here I am displaying view controllers in a container view and here I need to pass the multiple data but here nothing had been passed from the view controller to another can anyone help me how to implement this ?

here is my code shown below

let controller:PaymentViewController = self.storyboard!.instantiateViewController(withIdentifier: "paymentPage") as! PaymentViewController
controller.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)
controller.carrierCode = self.responseData[0].carrierCode
controller.methodCode = self.responseData[0].methodCode
controller.willMove(toParentViewController: self)
self.view.addSubview(controller.view)
self.addChildViewController(controller)
controller.didMove(toParentViewController: self)
controller.guestShippingAddressModel = self.guestShippingAddressModel

and I tried to pass model class data to another using user defaults but it was not successful and I used below data

here is my code

 if let jsonData = try? JSONEncoder().encode(self.guestShippingAddressModel) {
   print("To Save:", jsonData)

   //Save as data
   UserDefaults.standard.set(jsonData,forKey: "guestAddress")
  }

to decode model class data I was using below code

if let data = UserDefaults.standard.data(forKey: "guestAddress"),
   let sorts = try? JSONDecoder().decode(GuestAddress.self, from: data) {
    print("Retrieved:", sorts)
    self.guestShippingAddressModel = sorts
 }
User
  • 73
  • 1
  • 8

1 Answers1

0

If model is a object that can be stored in memory, you can pass it into property of 'PaymentViewController':

class PaymentViewController : UIViewController {

  <...>
  var model: GuestAddress?
  <...>
}

<...>
//in caller
let controller:PaymentViewController = self.storyboard!.instantiateViewController(withIdentifier: "paymentPage") as! PaymentViewController
controller.model = self.guestAddressModel
<...>

If model is too big to store it in the memory. You can save it somewhere on a disc and use path to it to get needed data.
Also you can use CoreData to manage models inside your application, and pass CoreData objects to PaymentViewController (CoreData objects use lazy loading of data).

Andrew Romanov
  • 4,774
  • 3
  • 25
  • 40