2016-07-12 52 views
0

我試圖從我的Firebase數據庫中拉下信息並使用它創建類型爲Order的對象。我在catch語句中打印的錯誤如下。使用Firebase值創建對象時出錯

錯誤域= myProjectName.OrderError代碼= 0 「(零)」

我不能確定這是什麼意思究竟,或如何解決它。 我在Order類中定義了一個自定義錯誤類型,如下所示。

enum OrderError: ErrorType 
{ 
    case IllegalOrderNumber 
    case InvalidEntry 
} 

該錯誤由以下代碼段生成。

self.ref.child("orders").observeEventType(.ChildAdded, withBlock: { (snapshot) in 
     let pickupLoc = snapshot.value!["pickupLocation"] as? String 
     let dropoffLoc = snapshot.value!["dropoffLocation"] as? String 
     let orderNumInt = snapshot.value!["orderNum"] as? Int 
     //since the database will return nil if you try and cast a string to an int 
     //we get it as an int then cast to string 
     let orderNum = String(orderNumInt) 

     do 
     { 
      let myOrder = try Order(PickUpLoc: pickupLoc, DropOffLoc: dropoffLoc, OrderNum: orderNum)! 
      self.orders.append(myOrder) 
     } 
     catch let error as NSError 
     { 
      //should never get here 
      print(error) 
     } 
}) 

我所有的錯誤,當用戶輸入值插入數據庫檢查的,所以應該沒有理由在那裏產生一個錯誤。

+0

放一個斷點並打印'error.description',它打印什麼? – Santosh

+0

它打印如上所述'錯誤域= myProjectName.OrderError代碼= 0「(空)」' – sBourne

回答

0

好的,在梳理我的代碼後,我注意到了兩個主要的可能的錯誤源。首先,儘管編譯器不抱怨,但do-catch block並不詳盡,因此增加了一個catch來解決這個問題。其次,我相信這個錯誤是由於我宣佈我的Orders陣列爲var orders = [Order()]而不是var orders = [Order](),當我改變這個時,程序運行順利。