gpt4 book ai didi

ios - 持久化数据并传递给多个 View

转载 作者:搜寻专家 更新时间:2023-11-01 06:43:57 24 4
gpt4 key购买 nike

我有一个应用程序,用户通过输入他们的详细信息登录并向我的 API 发送 HTTP GET 请求,该 API 对用户进行身份验证并将用户数据/用户对象从数据库发回。

完成此操作后,在点击按钮时触发的 HTTP 请求中,我将用户数据发送到下一个 View ,并使用以下代码执行到该 View 的转换:

            if let parseJSON = json
{
// parseJSON contains the return data. We are programmatically creating a segue between two views
// passing data between them.
dispatch_async(dispatch_get_main_queue())
{

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("mainView") as! MainViewController
var fullname = parseJSON["employeeName"] as! String
var job = parseJSON["jobTitle"] as! String
var email = parseJSON["email"] as! String
vc.username = fullname
vc.jobTitle = job
vc.userEmail = email
self.presentViewController(vc, animated: true, completion: nil)

}

上面的工作非常完美。从我的第二个 View 中,我为另一个 View 创建了一个 prepare for segue,我试图将用户数据传递给第二个 View ,当用户使用以下代码登录时:

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if (segue.identifier == "settings") {
// pass data to next view
let viewController = segue.destinationViewController as! SettingsTableViewController
viewController.username = username
viewController.jobTitle = jobTitle
}
}

这再次正常工作。当我点击按钮转到 View 3 时,prepareforsegue 函数传递数据并显示以下 View (忽略电子邮件字段):

enter image description here

但是,当我单击后退按钮并尝试访问同一 View 时,所有来自 API 并从 View 1 传递到 View 2 再到 View 3 的数据都消失了。请参阅下面:

enter image description here

我确实理解发生这种情况的原因,我在一个方向上传递数据并且它不会被保存,只是从一个 View 传递到另一个 View ,当我返回一个 View 时,在中断之间传递数据的过程丢失了。

我的问题是当用户首次登录并且 API 发回数据时如何保留数据。我可以保存吗?并通过多个 View 继续传递它,无论如何仍然保留它?

任何帮助将不胜感激。提前致谢。

最佳答案

简而言之:将您获得的数据存储在 View 的实例变量中,并将该变量用于转场。

详细说明:最佳做法是为您从 API 获取的内容创建一个模型类,在检索信息时将所有数据放入该类的一个变量中,就像所说的那样,在您的 View 类中有一个该类型的变量。

提示:阅读一些关于 MVC paradigama 的内容(网上有很多东西,如果你有时间阅读四人合着的设计模式一书)

关于ios - 持久化数据并传递给多个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32518715/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com