在这里,我在容器视图中显示视图控制器,在这里我需要传递多个数据,但这里没有任何东西从视图控制器传递到另一个,任何人都可以帮助我如何实现这一点?
这是我的代码,如下所示
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
我尝试使用用户默认值将模型类数据传递给另一个,但没有成功,我使用了以下数据
这是我的代码
if let jsonData = try? JSONEncoder().encode(self.guestShippingAddressModel) {
print("To Save:", jsonData)
//Save as data
UserDefaults.standard.set(jsonData,forKey: "guestAddress")
}
解码我在下面代码使用的模型类数据
if let data = UserDefaults.standard.data(forKey: "guestAddress"),
let sorts = try? JSONDecoder().decode(GuestAddress.self, from: data) {
print("Retrieved:", sorts)
self.guestShippingAddressModel = sorts
}
如果模型是可以存储在内存中的对象,则可以将其传递到"PaymentViewController"的属性中:
class PaymentViewController : UIViewController {
<...>
var model: GuestAddress?
<...>
}
<...>
//in caller
let controller:PaymentViewController = self.storyboard!.instantiateViewController(withIdentifier: "paymentPage") as! PaymentViewController
controller.model = self.guestAddressModel
<...>
如果模型太大而无法将其存储在内存中。您可以将其保存在光盘上的某个位置,并使用其路径来获取所需的数据。
您还可以使用 CoreData 来管理应用程序内的模型,并将 CoreData 对象传递给 PaymentViewController(CoreData 对象使用延迟加载数据)。