无法从 UserDefaults 获取字符串值

Unable to get String value from UserDefaults

无法获取存储在 UserDefaults 中的字符串值

var videoString = String()

在视图中加载

videoString = "http://site4brandz.com/cphp/26/uploads/oggy.mp4"
UserDefaults.standard.set(videoString as String, forKey: CurrentURL)
UserDefaults.standard.synchronize()
print("\(UserDefaults.standard.object(forKey: CurrentURL))")

打印如下:

Optional(http://site4brandz.com/cphp/26/uploads/oggy.mp4)

当我回去检查同一个字符串时

if (UserDefaults.standard.value(forKey: CurrentURL) != nil) {
    print("\(UserDefaults.standard.value(forKey: CurrentURL))")
    let runningSrtring  = UserDefaults.standard.value(forKey: CurrentURL)!
}

但是现在打印成Optional(4.067826)我哪里弄错了?

在 Swift3 中

使用如何 UserDefaults.standard.string(forKey: CurrentURL)!

改为UserDefaults.standard.value(forKey: CurrentURL)!

在Swift2.3

您可以在 UserDefaults

中设置值字符串
NSUserDefaults.standardUserDefaults().setObject(videoString, forKey: CurrentURL)

通过从

获取值
if let string = NSUserDefaults.standardUserDefaults().stringforKey(CurrentURL) {
}

在Swift3 您可以在 UserDefaults

中设置值字符串
UserDefaults.standard.set(videoString, forKey: CurrentURL)

UserDefaults

获取值
if let string = UserDefaults.standard.string(forKey: CurrentURL) {
}

确保您的密钥 "CurrentURL" 具有相同的值

更改您的 UserDefaults 设置代码:

来自:

UserDefaults.standard.set(videoString as String, forKey: CurrentURL)

if videoString {
  UserDefaults.standard.set(videoString!, forKey: CurrentURL)
}

并检查不同之处!

用 Swift3 试试:

extension UserDefaults {

    func setValue(value: String, key: String) {
        set(value, forKey: key)
        synchronize()
    }

    func getValue(key: String) -> String {
        return string(forKey: key)
    }
}

用法:

let videoString: String = "http://site4brandz.com/cphp/26/uploads/oggy.mp4"

UserDefaults.standard.setValue(value: videoString, key: CurrentURL)

并检查它:

print(UserDefaults.standard.getValue(key: CurrentURL))

请注意,我正在使用 key 作为 String。将 key 的类型更改为您期望的 CurrentURL 类型(例如:URL Type, ...)