First point is to solve this:
var textFields = var textFieldKeys = [ "benchPressPB", "squatPB", "deadliftPB", "ohpPB", "rackPullPB", "legPressPB", "pullUpsPB" ]
var textFieldStrings =
What is your intent ? Where did you copy it from (with errors) ?
Do you mean :
var textFields : [UITextField] = []
var textFieldKeys = [ "benchPressPB", "squatPB", "deadliftPB", "ohpPB", "rackPullPB", "legPressPB", "pullUpsPB" ]
var textFieldStrings : [String] = []
If so, your code is now:
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var benchPressPB: UITextField!
@IBOutlet weak var squatPB: UITextField!
@IBOutlet weak var deadliftPB: UITextField!
@IBOutlet weak var ohpPB: UITextField!
@IBOutlet weak var rackPullPB: UITextField!
@IBOutlet weak var legPressPB: UITextField!
@IBOutlet weak var pullUpsPB: UITextField!
var textFields : [UITextField] = []
var textFieldKeys = ["benchPressPB", "squatPB", "deadliftPB", "ohpPB", "rackPullPB", "legPressPB", "pullUpsPB"]
var textFieldStrings : [String] = []
override func viewDidLoad() {
super.viewDidLoad()
self.benchPressPB.delegate = self
self.squatPB.delegate = self
self.deadliftPB.delegate = self
self.ohpPB.delegate = self
self.rackPullPB.delegate = self
self.legPressPB.delegate = self
self.pullUpsPB.delegate = self
textFields = [benchPressPB, squatPB, deadliftPB, ohpPB, rackPullPB, legPressPB, pullUpsPB]
for (index, key) in textFieldKeys.enumerated() {
let aValue = UserDefaults.standard.string(forKey: key)
textFields[index].text = aValue
textFieldStrings.append(aValue ?? "")
}
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
let newText = textField.text ?? "" // textField.text is an optional, but textFieldStrings[index] is String, not String? ; so ?? make it sure you get a String (maybe empty) and not String?
if let index = textFields.firstIndex(of: textField) {
textFieldStrings[index] = newText
UserDefaults.standard.set(newText, forKey: textFieldKeys[index])
}
return true
}
}
Try with those changes and tell what you get.