Ios 我的用户默认值不保存我的滑块值-Swift 3

Ios 我的用户默认值不保存我的滑块值-Swift 3,ios,swift,swift3,nsuserdefaults,uislider,Ios,Swift,Swift3,Nsuserdefaults,Uislider,我正在创建一个Pomotoro计时器应用程序,目前我正在尝试在幻灯片菜单(设置类)中实现用户默认设置,该菜单负责包含用于调整计时器长度的UI滑块。在我看来,用户默认值非常正确,但每当我在模拟器中关闭应用程序并重新打开它时,该值都不会保存?滑块和标签都返回其默认值。我做错了什么 import Foundation import UIKit class Settings: UIView { let defaults = UserDefaults.standard let durationSli

我正在创建一个Pomotoro计时器应用程序,目前我正在尝试在幻灯片菜单(设置类)中实现用户默认设置,该菜单负责包含用于调整计时器长度的UI滑块。在我看来,用户默认值非常正确,但每当我在模拟器中关闭应用程序并重新打开它时,该值都不会保存?滑块和标签都返回其默认值。我做错了什么

import Foundation
import UIKit

class Settings: UIView {

let defaults = UserDefaults.standard

let durationSlide = "durationSlide"


@IBOutlet weak var durationSlider: UISlider!
@IBOutlet weak var durationLabel: UILabel!

func viewDidLoad() {

    if let durationSlide = defaults.value(forKey: durationSlide) {
        durationSlider.value = durationSlide as! Float
        durationSliderValueChanged(durationSlider)
    }


}


@IBAction func durationSliderValueChanged(_ sender: UISlider) {
    let currentValue = Int(sender.value)
    durationLabel.text = "\(currentValue) minutes"
    defaults.set(sender.value, forKey: durationSlide)
}

您应该使用适当的方法对
UserDefaults

您正在使用
defaults.set(sender.value,forKey:durationSlide)
保存值,它正在
UserDefaults
中保存一个
Float

但是您尝试读取值时使用了错误的方法。您使用的是
value(forKey:)
,它不是
UserDefaults
的方法。它是从键值编码扩展到
NSObject
(其中
UserDefaults
扩展)。相反,请使用:

durationSlide = defaults.float(forKey: durationSlide)

如果
UserDefaults

中没有值,则这将给出
0
的值。使用
defaults.float(forKey:durationSlide)
您的
设置
类实现为
UIView
,而不是
UIViewController
。因此,不会自动调用其方法
viewDidLoad()
。在实例化
设置时显式调用它,或定义
设置的初始值设定项,并从初始值设定项内部调用
viewDidLoad()
(名称应更改…)。