【问题标题】:error creating object using Firebase values使用 Firebase 值创建对象时出错
【发布时间】:2016-07-12 19:37:56
【问题描述】:

我正在尝试从我的 Firebase 数据库中提取信息并使用它来创建 Order 类型的对象。我在 catch 语句中打印的错误如下。

错误域=myProjectName.OrderError Code=0 "(null)"

我不确定这究竟意味着什么,或者如何解决它。 我在我的 Order 类中定义了一个自定义错误类型,如下所示。

enum OrderError: ErrorType
{
    case IllegalOrderNumber
    case InvalidEntry
}

错误是由以下代码sn-p产生的。

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

当用户将值输入数据库时​​,我会进行所有错误检查,因此应该没有理由产生错误。

【问题讨论】:

  • 设置断点并打印error.description,它会打印什么?
  • 如我上面所说的那样打印Error Domain=myProjectName.OrderError Code=0 "(null)"

标签: ios swift firebase firebase-realtime-database


【解决方案1】:

好的,所以在梳理了我的代码后,我注意到两个主要可能的错误来源。首先,尽管编译器没有抱怨,do-catch block 并不详尽,因此添加了一个额外的catch 来解决这个问题。其次,我认为错误是由于我将Orders 数组声明为var orders = [Order()] 而不是var orders = [Order]() 而产生的,当我更改它时,程序运行顺利。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多