所以我得到了下面的函數來設置我的地圖區域我的應用程序:爲什麼我的MKCoordinateRegion零?
func mapRegion() -> MKCoordinateRegion {
databaseHandle = databaseRef.child("RunList").child(runName).observe(.value, with: { (snapshot) in
let runData = snapshot.value as? [String: AnyObject]
self.minLat = runData?["startLat"] as? Double
self.minLng = runData?["startLong"] as? Double
self.maxLat = runData?["endLat"] as? Double
self.maxLng = runData?["endLong"] as? Double
print("testing")
print(self.minLat!)
print(self.maxLng!)
self.coordinate = MKCoordinateRegion(
center: CLLocationCoordinate2D(latitude: (self.minLat! + self.maxLat!)/2,
longitude: (self.minLng! + self.maxLng!)/2),
span: MKCoordinateSpan(latitudeDelta: (self.maxLat! - self.minLat!)*1.1,
longitudeDelta: (self.maxLng! - self.minLng!)*1.1))
})
return coordinate
}
我已經初始化以下變量在我班上的第一名:
var minLat: Double!
var minLng: Double!
var maxLat: Double!
var maxLng: Double!
var coordinate: MKCoordinateRegion!
,我試圖設置地圖區域如下:
override func viewDidLoad() {
super.viewDidLoad()
configureView()
mapView.region = mapRegion()
}
我得到的錯誤是在我設置我的座標區域的代碼塊下的行ns我的databaseHandle在mapRegion()中。當代碼運行時,我得到的線下下面的錯誤「迴歸座標爲:
fatal error: unexpectedly found nil while unwrapping an Optional value
據我瞭解,這是發生因爲「座標」沒有值,是可選的。爲什麼即使我使用全局變量進行設置,座標也沒有值?我覺得我錯過了這麼簡單的事情!
感謝
*我已經在我的課程頂部初始化了以下變量*。不,你沒有。您已**將變量聲明爲隱式解包選項。他們沒有初始值,因此他們是'零',並可能導致崩潰。 – vadian
問題是'返回座標'將在你初始化之前調用它發生,因爲'observe'的完成塊將在你得到響應時調用異步,所以你需要的是用'mapRegion'方法創建完成塊。 –