2017-09-15 134 views
1

每次我運行此我得到這個錯誤:致命錯誤:致命錯誤火力地堡快照

Unexpectedly found nil while unwrapping an Optional value 2017-09-15 06:30:04.650075+0200 RollerBank[845:211470] fatal error: unexpectedly found nil while unwrapping an Optional value.

我不知道我已經做錯了。有人能幫助我嗎?

func reload(){ 
      //get data 
      Database.database().reference().child("Rollerbanken").observe(.value, with: { (snapshot) in 



       for item in snapshot.children{ 

        if let itemDict = snapshot.value as? NSDictionary { 


         let annotation = MKPointAnnotation() 


         annotation.title = itemDict["TypeControle"] as! String 
         let tijd = itemDict["Tijd"] as! String 
         annotation.subtitle = "Geplaatst om \(tijd)" 


         let getLatitude = itemDict["Latitude"] as! Double 
         let getLongitude = itemDict["Longitude"] as! Double 

         annotation.coordinate = CLLocationCoordinate2D(latitude: getLatitude, longitude: getLongitude) 

         self.map.addAnnotation(annotation) 

        } 
       } 
      }) 
     } 

Structure

+0

ü可以貼上 「Rollerbanken」 的結構? – Appygix

+0

我有我的問題更新 –

回答

0

使用它來分析從Firebase收到的值。

if let value = snapshot.value as? Dictionary<String, Any> { 

    for key in value.keys { 
      if let itemDict = value[key] as? Dictionary<String, AnyObject> { 

       let annotation = MKPointAnnotation() 
       annotation.title = itemDict["TypeControle"] as! String 
       let tijd = itemDict["Tijd"] as! String 
       annotation.subtitle = "Geplaatst om \(tijd)" 

       let getLatitude = itemDict["Latitude"] as? String 
       let getLongitude = itemDict["Longitude"] as? String 
       if let lat = getLatitude, let long = getLongitude { 
        annotation.coordinate = CLLocationCoordinate2D(latitude: Double(lat), longitude: Double(long)) 

        self.map.addAnnotation(annotation) 
      } 
     } 
    } 
} 
+0

我現在有一個不同的錯誤:無法將類型'__NSCFString'(0x1b2ce3f70)的值轉換爲'NSNumber' (0x1b2cf0b38)。 2017-09-15 07:14:30.180612 + 0200 RollerBank [898:224284]無法將類型'__NSCFString'(0x1b2ce3f70)的值轉換爲'NSNumber'(0x1b2cf0b38)。 –

+0

您會在哪一行收到此錯誤?同時檢查你的dataType一次。 – Surjeet

+0

我認爲當您嘗試獲取緯度,經度時,您會收到此次崩潰。根據你的數據庫結構,它們是字符串值,而你將它們轉換爲Double。 – Surjeet

0

我相信你的問題是與這條線

if let itemDict = snapshot.value as? NSDictionary 

你讓你的itemDict整個對象的字典。所以你沒有「TypeControle」鍵,你有一個生成的Firebase ID的鍵。你可以通過child.value獲得你正在尋找的字典,我相信。

if let itemDict = item.value as? NSDictionary 
+0

我得到一個錯誤..:類型'Any'的值沒有成員'值' –

0

你的代碼改成這樣:

for item in snapshot.children { 

    let snapshotValue = item.value as! [String: AnyObject] 
    key = snapshotValue["TypeControle"] as! String 
    tijd = snapshotValue["tijd "] as! String 
    // etc.. 
} 

希望它可以幫助