无法从UserDefaults获取String值

时间:2017-02-03 10:00:29

标签: ios swift3 nsuserdefaults

无法获取存储在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)我在哪里犯了错误?

4 个答案:

答案 0 :(得分:7)

在Swift3中

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

代替UserDefaults.standard.value(forKey: CurrentURL)!

答案 1 :(得分:1)

Swift 2.3中的

您可以在UserDefaults

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

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

在Swift 3中 您可以在UserDefaults

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

通过UserDefaults

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

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

答案 2 :(得分:1)

更改您的UserDefaults设置代码:

来自:

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

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

并检查不同的内容!

答案 3 :(得分:1)

尝试使用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))

请注意,我使用 作为String。按预期将的类型更改为 CurrentURL 类型(例如:URL Type,...)