第一次发帖,对于问题的格式/长度不正确感到抱歉。
我正在 Xcode 中构建一个应用程序,允许用户在众多 View Controller 中输入各种输入,然后在单个 View Controller 中输出,并通过标签显示结果。
原始输入的文本字段数据存储在 UserDefaults 中,稍后可以在生成的 VC 中显示它们,没有任何问题。然而,我在计算输出时遇到了问题(在本例中为“papiresult”)。
任何人都可以提供指导如何使用 UserDefaults 稍后打印多个 View Controller 的计算结果吗?
这是大致的布局
这是我在第一个 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")
}
}
这是最后一个(结果) View Controller 中的代码:
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
而不是创建 UserDefaults
类的新实例。所以我认为这段代码
let userDefaults = UserDefaults()
应替换为:
let userDefaults = UserDefaults.standard
关于swift - 如何将计算结果存储在 UserDefaults 中以显示在 "results" View Controller 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54328420/