'UIStepper - start counting from 1

I have successfully implemented core data and UISteppers. Every time I try to edit a saved record the UI Stepper starts over from 0. Please help me to figure put what additional code I need to retain the already edited value.

    // This function adds the stepper to a field
    //issue: it does not remember the score when i edit it and starts over
    
    @IBAction func counterStepperPressed(_ sender: UIStepper) {
        counterTF.text = Int(sender.value).description
    }
    
    @IBAction func pointStepperPressed(_ sender: UIStepper) {
        pointTF.text = Int(sender.value).description
    }       
    
    @IBAction func savingsStepperPressed(_ sender: UIStepper) {
        savingsTF.text = Int(sender.value).description
    }        
}

I have linked core data like so:

import CoreData

class AktieViewController: UIViewController {

    @IBOutlet weak var counterStepper: UIStepper!
    @IBOutlet weak var pointsStepper: UIStepper!
    @IBOutlet weak var savingsStepper: UIStepper!
    var selectedAktie: Aktie? = nil
    override func viewDidLoad()
    {
        super.viewDidLoad()
        if(selectedAktie != nil) {

            savingsTF.text = selectedAktie?.saving
            counterTF.text = selectedAktie?.counter
            pointTF.text = selectedAktie?.point
        }
    }

    @IBAction func saveAction(_ sender: Any) {
        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        let context: NSManagedObjectContext = appDelegate.persistentContainer.viewContext
        if(selectedAktie == nil)
        {
            let entity = NSEntityDescription.entity(forEntityName: "Aktie", in: context)

            let newAktie = Aktie (entity: entity!, insertInto: context)
            newAktie.saving = savingsTF.text
            newAktie.point = pointTF.text
            newAktie.counter = counterTF.text
            do {

                try context.save()
                aktieList.append(newAktie)
                navigationController?.popViewController(animated: true)
        }
        catch
        {
          print("context save error")
        }
    }

I also have an edit and delete function.



Solution 1:[1]

This function eventually solved my question:

@IBAction func counterStepperPressed(_ sender: UIStepper) {
    let initialValue=Int(counterTF.text) ?? 0
    let newValue=Int(sender.value)+initialValue
    counterTF.text="\(newValue)"
}

Solution 2:[2]

I have managed to add the following code to remember the value in the stepper.

if let value=UserDefaults.standard.value(forKey: "counterStepper") as? Double {
counterStepper.value=value counterTF.text=String(describing: value)

And in the action I have added the following code.

@IBAction func counterStepperPressed(_ sender: UIStepper) {
    counterTF.text=String(describing: sender.value)
    UserDefaults.standard.setValue(sender.value, forKey: "counterStepper")
    NotificationCenter.default.post(Notification.init(name: Notification.Name("StepperDidChangeValue")))
}

The only issue I have is that if I edit a second item it remembers the value of the first item. Somehow it is not remembering the original value of the item.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Pylyp Dukhov
Solution 2 Pylyp Dukhov