2016-07-12 6 views
0

Я пытаюсь извлечь информацию из базы данных Firebase и использовать ее для создания объекта типа Order. Ошибка, которую я напечатал в выводе, выглядит следующим образом.ошибка создания объекта с использованием значений Firebase

Ошибка домена = myProjectName.OrderError Code = 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 Code = 0 "(null)" ' – sBourne

ответ

0

Хорошо, поэтому, прочесывая мой код, я заметил два основных возможных источника ошибок. Во-первых, несмотря на то, что компилятор не жаловался, do-catch block не был исчерпывающим, поэтому для его исправления был добавлен дополнительный catch. Во-вторых, я считаю, что ошибка возникла из-за того, что я объявил свой массив Orders как var orders = [Order()], а не var orders = [Order](), когда я изменил это, программа прошла гладко.

Смежные вопросы