2017-10-12 40 views
0

在下面的代碼中給出警告經度和緯度後else語句從未使用,如果我的字典不包含經度值緯度將被設置爲讓經度=雙倍(151.209900)並且讓緯度=雙倍(-33.865143)?還是我做錯事與保護讓聲明如果沒有值返回集合double到一個帶有警衛let語句的集合號碼

guard let dictionary = snapshot.value as? [String : AnyObject] else { return } 
guard let latitude = dictionary["Latitude"] as? String else { 
    let latitude = Double(-33.865143)    
    return 
} 
guard let longitude = dictionary["Longitude"] as? String else { 
    let longitude = Double(151.209900) 
    return 
}  
guard let latDouble = Double(latitude) else { return } 
guard let longDouble = Double(longitude) else { return } 
+0

在你的函數中設置一個斷點,並觀察如果字典中沒有關鍵字「緯度」的條目會發生什麼。 - 那是你的意圖嗎? –

回答

3

緯度和經度設置的值將永遠不會被使用,因爲其範圍僅限於guard

我可能會不喜歡這樣,而不是:

guard let dictionary = snapshot.value as? [String : AnyObject] else { return } 


let latitude = Double(dictionary["Latitude"] as? String ?? "-33.865143") 
let longitude = Double(dictionary["Longitude"] as? String ?? "151.209900")