[英]Converting String to Double in Swift
我正在嘗試將要從核心數據中檢索的String轉換為Double。 我收到一條錯誤消息:“可選類型'Double的值?' 沒有包裝;您的意思是使用'!' 要么 '?'?” 如果我嘗試添加一個! 或?,然后出現新錯誤“無法強制打開非可選類型'Double'的包裝值”。請參見下面的代碼。
@IBAction func proceedTapped(_ sender: Any) {
let l1 = loc1.latitude
let l2 = loc2.latitude
let lg1 = loc1.longitude
let lg2 = loc2.longitude
var lat1 :Double = 0.0
var lat2 :Double = 0.0
var long1 :Double = 0.0
var long2 :Double = 0.0
if let l1 = l1 as? String{
lat1 = Double(l1)
}
if let l2 = l2 as? String{
lat2 = Double(l2)
}
if let lg1 = lg1 as? String{
long1 = Double(lg1)
}
if let lg2 = lg2 as? String{
long2 = Double(lg2)
}
let earthR:Double = 3959.0
let step1 = acos(sin(lat1)*sin(lat2)+cos(lat1)*cos(lat2)*cos(abs(long1-long2)))
let dist = step1*earthR
您應該檢查您的字符串是否正確,或者它看起來像是Double格式
var lat1 = "4.0"
if let lat1 = lat1 as? String{
print(Double(lat1)) // 4.0
}
無法保證您的字符串可以轉換為Double(例如,您的字符串為“ hello”),因此Double()初始化程序是一個失敗的初始化程序。 換句話說,Double(string :)方法返回一個可選的Double。
因此,請決定如何處理無法轉換為Double的失敗。 例如:
if let l1 = l1 as? String{
lat1 = Double(l1) ?? 0.0
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.