2016-07-12 6 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

上記のように出力されます。 'Error Domain = myProjectName.OrderError Code = 0"(null) "' – sBourne

答えて

0

私のコードをコーディネートした後、2つの主要なエラーの可能性があることがわかりました。まず、コンパイラが不平を言っていないにもかかわらず、do-catch blockは網羅的ではなかったので、これを修正するために追加のcatchが追加されました。第二に、私はvar orders = [Order]()とは対照的にOrdersの配列をvar orders = [Order()]と宣言したことによってエラーが発生したと考えています。プログラムをスムーズに実行しました。

関連する問題