如何将计算结果存储在 UserDefaults 中以显示在“结果”视图控制器中 [重复]
Posted
技术标签:
【中文标题】如何将计算结果存储在 UserDefaults 中以显示在“结果”视图控制器中 [重复]【英文标题】:How do I store a calculated result in UserDefaults to display in a "results" View controller [duplicate] 【发布时间】:2019-01-23 13:29:55 【问题描述】:第一次发帖,很抱歉问题的格式/长度不正确。
我正在 Xcode 中构建一个应用程序,它允许用户在众多视图控制器中输入各种输入,然后在单个视图控制器中输出,结果通过标签显示。
原始输入的文本字段数据存储在 UserDefaults 中,以后可以在生成的 VC 中毫无问题地显示它们。但是,我在计算输出时遇到了问题(在本例中为“papiresult”)。
谁能提供指导如何在以后使用 UserDefaults 打印出几个视图控制器的计算结果?
这是粗略的布局
这是我在第一个 ViewController 中的代码:
import UIKit
let userDefaults = UserDefaults()
var papiresult = Double()
class ViewController1: UIViewController, UITextFieldDelegate
@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
@IBOutlet weak var textField3: UITextField!
override func viewDidLoad()
super.viewDidLoad()
textField1.delegate = self
textField2.delegate = self
textField3.delegate = self
//Declaring data input into UserDefaults//
@IBAction func sendDataToVC2(_ sender: Any)
let systPA = Double(textField1.text!)
let diastPA = Double(textField2.text!)
let cvPressure = Double(textField3.text!)
papiresult = ((systPA!-diastPA!)/cvPressure!)
userDefaults.set(textField1.text, forKey: "PASP")
userDefaults.set(textField2.text, forKey: "PADP")
userDefaults.set(textField3.text, forKey: "CVP")
userDefaults.set(papiresult, forKey: "PAPI")
这是最后一个(结果)视图控制器中的代码:
import UIKit
class ViewController3: UIViewController
@IBOutlet weak var label1: UILabel!
@IBOutlet weak var label2: UILabel!
@IBOutlet weak var label3: UILabel!
@IBOutlet weak var label4: UILabel!
@IBOutlet weak var label5: UILabel!
override func viewDidLoad()
super.viewDidLoad()
//Recalling data from UserDefaults//
override func viewWillAppear(_ animated: Bool)
if let data1 = userDefaults.object(forKey: "PASP")
if let message1 = data1 as? String
self.label1.text = message1
if let data2 = userDefaults.object(forKey: "PADP")
if let message2 = data2 as? String
self.label2.text = message2
if let data3 = userDefaults.object(forKey: "CVP")
if let message3 = data3 as? String
self.label3.text = message3
if let data4 = userDefaults.object(forKey: "Age")
if let message4 = data4 as? String
self.label4.text = message4
if let data5 = userDefaults.object(forKey: "PAPI")
if let message5 = data5 as? Double
self.label5.text = "\(message5)"
【问题讨论】:
UserDefaults.standard.set(, forKey: )
- 设置值 UserDefaults.standard.string(forKey: )
- 获取字符串值
【参考方案1】:
基本上,您应该使用UserDefaults.standard
而不是创建UserDefaults
类的新实例。所以我认为这段代码
让 userDefaults = UserDefaults()
应该替换为:
let userDefaults = UserDefaults.standard
【讨论】:
以上是关于如何将计算结果存储在 UserDefaults 中以显示在“结果”视图控制器中 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将 UIView 存储在 CoreData 或 UserDefaults 中