[Swift]我的数据被写入到 Firebase 数据库,但为什么不能看了吗?

标签: json Swift
发布时间: 2017/3/5 3:33:49
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我是新来 swift 和数据库。我想从读取我 firebase 数据库。我在这里使用提供的示例代码︰ https://www.firebase.com/docs/ios/guide/retrieving-data.html。 我打电话这从我的 viewcontroller.swift 文件中重写函数 viewDidLoad() {}

func getRootRef(){
        // Read data and react to changes
        println("entered getRootRef")
        myRootRef.observeEventType(.Value, withBlock: { snapshot in
            println("value1")
            println(String(stringInterpolationSegment: snapshot.value))
            println("value2")
            }, withCancelBlock: { error in
                println(error.description)
                println("error")
        })
        println("left getRootRef")
}

输出︰

entered getRootRef
left getRootRef
ViewController3
ViewController4
value1
(Function)
value2

我不明白为什么"(函数)"打印出而不我的数据。同时读取和写入权限被设置为 true。我正在做一个 Mac 应用程序。

解决方法 1:

您的代码示例不给足够的信息,你想要做的事-但是,假设您想要打印出 myRootRef 节点的内容...

我认为,在 Swift 、 FDataSnapshot.value 被认为是可选 — — 它可能包含一个值,或它可能是零。因此,我们需要打开的值︰

myRootRef.observeEventType(.Value, withBlock: { snapshot in     
   println( snapshot.value()! )          
})

!是变量强迫的展开,所以它必须包含一个值。它应为零在打印前检查,否则它会导致一个运行时错误。

这可能是更安全

myRootRef.observeEventType(.Value, withBlock: { snapshot in
    if let value: AnyObject = snapshot.value() {
        println(value)
    }  
})

注意,snapshot.value 可以包含一个不同的对象数目︰ 返回的数据类型: * NSDictionary * NSArray * NSNumber (也包括布尔值) * NSString

赞助商