我有一个选项字符串,并希望将其转换为double.
这在Swift 2中有效,但自从转换为Swift 3后,我的值为0.
var dLati = 0.0
dLati = (latitude as NSString).doubleValue
Run Code Online (Sandbox Code Playgroud)
我有检查和纬度有一个可选的字符串值,如-80.234543218675654,但dLati值是0
***************好,新的更新为清晰*****************
我有一个viewcontroller,我有一个按钮,当触摸按钮时,它将调用另一个viewcontroller并传递一些值到这里是第一个viewcontroller的代码
var currentLatitude: String? = ""
var currentLongitude: String? = ""
var deviceName = ""
var address = ""
// somewhere in the code, currentLatitude and currentLongitude are get set
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "map" {
let destViewController : MapViewController = segue.destination as! MapViewController
print(currentLongitude!) // Print display: Optional(-80.192279355363768)
print(currentLatitude!) // Print display: Optional(25.55692663937162)
destViewController.longitude = currentLongitude!
destViewController.latitude = currentLatitude!
destViewController.deviceName = deviceName
destViewController.address = address
}
}
Run Code Online (Sandbox Code Playgroud)
这是第二个视图控制器的代码,称为MapViewController
var longitude: String? = " "
var latitude: String? = ""
.
.
override func viewDidLoad() {
if let lat = latitude {
print(lat) // Print display: optiona(25.55692663937162)
dLati = (lat as NSString).doubleValue
print(dLati) // Print display: 0.0
}
.
.
}
Run Code Online (Sandbox Code Playgroud)
谢谢博尔纳
BJ *_*ler 26
在不需要使用Foundation类型的情况下实现此目的的一种安全方法是使用Double的初始化程序:
if let lat = latitude, let doubleLat = Double(lat) {
print(doubleLat) // doubleLat is of type Double now
}
Run Code Online (Sandbox Code Playgroud)
latitude安全打开值,然后使用
var dLati = 0.0
if let lat = latitude {
dLati = (lat as NSString).doubleValue
}
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常。
var dLati = 0.0
let latitude: String? = "-80.234543218675654"
if let strLat = latitude {
dLati = Double(strLat)!
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27758 次 |
| 最近记录: |