无法从 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
, ...)
无法获取存储在 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
, ...)