如何将用户输入值更改为默认值以备将来使用?

时间:2018-04-29 01:09:03

标签: swift

我尝试编写一个简单的应用程序,根据用户已完成的分钟数输入来计算项目的完成日期:

@IBOutlet weak var BDDate: NSTextField!
@IBOutlet weak var BDTime: NSTextField!

override func viewDidLoad() {
    super.viewDidLoad()
}

override var representedObject: Any? {
    didSet {
    }
}

@IBAction func BDSave(_ sender: Any) {
    let currentDate = Date()
    let daysToAdd = 10 - Int(BDTime.stringValue)!

    var dateComponent = DateComponents()
    dateComponent.day = daysToAdd

    let BDFinish = Calendar.current.date(byAdding: dateComponent, to: currentDate)

    let formatter = DateFormatter()
    formatter.dateFormat = "MMMM, dd"
    BDDate.stringValue = formatter.string(from: BDFinish!)
    }

然而,由于可能需要多天才能完成,因此会有多个输入。我想知道是否可以将以前的输入保存为默认值,以便完成日期将反映累积先前输入后的真实日期。

例如,如果整个项目需要10个小时才能完成,每天计划一个小时,如果我今天输入1个小时,最终结果将是9天。但是,当我再次打开应用程序并在明天再输入1小时时,最终结果仍然是9天后而不是8天后。

感谢任何指导或建议。感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用UserDefaults,它会在应用加载之间保留一个值,例如:

    var daysRemaining = 10 //For new project

    //If there is an existing value, load it from UserDefaults
    if let savedDaysRemaining = UserDefaults.standard.value(forKey: "savedDaysRemaining") as? Int {
        daysRemaining = savedDaysRemaining
    }

    //Substract the number of new days
    let daysToSubtract = 1
    daysRemaining -= daysToSubtract

    //Save new value to User Defaults
    UserDefaults.standard.set(daysRemaining, forKey: "savedDaysRemaining")