在Firebase调用中不明确地使用下标

时间:2015-11-25 22:55:14

标签: swift firebase skscene

我试图做一个firebase阅读,我试图从firebase读取一个整数,但由于某种原因,这不起作用:

func firebaseCall () {

        ref.observeEventType(.Value, withBlock: { snapshot in
            print(snapshot.value)
            let people = snapshot.value["people"] as! Int
            print("People is \(people)")
                       //            let time = snapshot.value["time"] as! Int
            let date = NSDate()
            let calendar = NSCalendar.currentCalendar()
            let components = calendar.components(.Hour, fromDate: date)
            let hour = components.hour

            print("time is \(hour)")



            }, withCancelBlock: { error in
                print(error.description)
        })
    }

我在snapshot.value [" people"]上得到错误的下标不明确的错误。我在另一个项目中使用了确切的代码并且它可以工作,所以我非常困惑。区别在于此代码在SKScene中使用,而另一次在视图控制器中使用。谁能帮忙解决这个问题?或者建议另一种方法,我可以从firebase读取int值?感谢

1 个答案:

答案 0 :(得分:5)

编译器不知道

返回的是什么
let people = snapshot.value["people"] as! Int

您可能需要考虑

if let someInt = snapshot.value.objectForKey("people")
or
if let someInt = snapshot.value as? Int

不知道快照中的内容会留下一点含糊之处。

如果对象可能为零,您可能需要添加一些方法来处理

    if let thing = snapshot.value {
        print("thing was not nil")
    } else {
        print("thing was nil")
    }