【发布时间】:2015-11-05 04:21:27
【问题描述】:
这是我的代码。如果默认值没有保存 lat、lng,那么就给它一个 lat lng。
问题是错误:
致命错误:在展开可选值时意外发现 nil
在下面的代码之后使用self.lat 和self.lng 时。每次控制台打印出来都是
保存的 gps 是 Optional("nil")
Optional("nil")是什么意思,和Optional(nil)有什么区别?
我正在使用 Xcode 7.1 和 Swift 2。
var lat : String = ""
var lng : String = ""
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.stringForKey("lat") != nil {
self.lat = defaults.stringForKey("lat")!
self.lng = defaults.stringForKey("lng")!
print ("the saved gps is \(defaults.stringForKey("lat"))")
} else {
self.lat = "34.7009333"
self.lng = "135.4942047"
print ("the init gps is \(self.lat) , \(self.lng)")
}
【问题讨论】:
-
你要求一个字符串。所以 nil 被包装为“nil”。
-
您似乎正在尝试提供默认默认值。你知道
registerDefaults吗? -
非常感谢,我将代码更改为 if defaults.stringForKey("lat") != "nil" ,然后它现在可以工作了。