2016-07-12 10 views
0

Ich versuche, Informationen aus meiner Firebase-Datenbank abzurufen und damit ein Objekt vom Typ Order zu erstellen. Der Fehler, den ich in der catch-Anweisung gedruckt habe, lautet wie folgt.Fehler beim Erstellen eines Objekts mit Firebase-Werten

Fehler Domain = myProjectName.OrderError-Code = 0 "(null)"

Ich bin nicht sicher, was das genau bedeutet, oder wie man es beheben. Ich habe einen benutzerdefinierten Fehlertyp in meiner Order-Klasse definiert, wie unten gezeigt.

enum OrderError: ErrorType 
{ 
    case IllegalOrderNumber 
    case InvalidEntry 
} 

Der Fehler wird durch das folgende Code-Snippet generiert.

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) 
     } 
}) 

ich alle der Fehlerprüfung, wenn der Benutzer den Wert in die Datenbank eingibt, so sollte es keinen Grund für die da sein, ein Fehler erzeugt werden.

+0

Setzen Sie einen Haltepunkt und drucken 'error.description', was es druckt? – Santosh

+0

es druckt wie ich oben sagte 'Fehler Domain = myProjectName.OrderError Code = 0" (null) "' – sBourne

Antwort

0

Okay, nachdem ich meinen Code durchgekämmt habe, sind mir zwei mögliche Fehlerquellen aufgefallen. Erstens, obwohl der Compiler sich nicht beschwerte, war die do-catch block nicht erschöpfend, und deshalb wurde eine zusätzliche catch hinzugefügt, um dies zu beheben. Zweitens glaube ich, dass der Fehler durch die Tatsache erzeugt wurde, dass ich mein Orders Array als var orders = [Order()] im Gegensatz zu var orders = [Order]() erklärte, als ich das änderte, lief das Programm glatt.

Verwandte Themen