Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Firebase“;找不到成员:Value“;迅速地_Ios_Swift_Firebase - Fatal编程技术网

Ios Firebase“;找不到成员:Value“;迅速地

Ios Firebase“;找不到成员:Value“;迅速地,ios,swift,firebase,Ios,Swift,Firebase,我有一段代码,用于从Firebase检索一些信息。但是,我不知道为什么它不能识别自己的枚举值。在我调用.Value的项目中,我在其他任何地方都没有遇到这个错误,所以我不确定我在实际操作中犯了什么错误 以下是代码片段: func getTimerInformation() { let timerRef = firebaseRef.childByAppendingPath("currentEvent").childByAppendingPath("stopTime") tim

我有一段代码,用于从Firebase检索一些信息。但是,我不知道为什么它不能识别自己的枚举值。在我调用
.Value
的项目中,我在其他任何地方都没有遇到这个错误,所以我不确定我在实际操作中犯了什么错误

以下是代码片段:

func getTimerInformation() {
    let timerRef = firebaseRef.childByAppendingPath("currentEvent").childByAppendingPath("stopTime")
        timerRef.observeSingleEventOfType(.Value, withBlock: { (snapshot) in
            self.dm.eventEndTime = snapshot.value
        })
}

这个错误完全是误导

一行长的Swift闭包返回该行的值。Swift希望闭包返回
void
,因此您的闭包与它在
observeSingleEventOfType
中期望的闭包不匹配。Swift在这一点上非常混乱,因此它不知道如何处理
.Value
,因为它不确定您正在调用的函数的签名是什么。如果在闭包中添加显式的
返回
行,则闭包将匹配预期的签名,并且您将发现实际的错误:

func getTimerInformation() {
    let timerRef = firebaseRef.childByAppendingPath("currentEvent").childByAppendingPath("stopTime")
    timerRef.observeSingleEventOfType(.Value, withBlock: { (snapshot) in
        self.dm.eventEndTime = snapshot.value
        return
    })
}
我认为问题在于你的作业<代码>快照。值的类型为
AnyObject
。添加返回后,您将看到如下错误:

错误:无法将“AnyObject”类型的值分配给类型的值 “字符串”

无论该类型是什么,都需要将
snapshot.value
转换为该类型。如果
dm.eventTime
确实是
字符串,则:

func getTimerInformation() {
    let timerRef = firebaseRef.childByAppendingPath("currentEvent").childByAppendingPath("stopTime")
    timerRef.observeSingleEventOfType(.Value, withBlock: { (snapshot) in
        self.dm.eventEndTime = snapshot.value as! String
        return
    })
}

如果您需要一个数字,那么
snapshot.value.doubleValue
应该可以工作。

如果您完全指定它会发生什么:
FEventType.value
?@vacawama发生完全相同的错误。我甚至查看了FEventType的实现,并且
Value
是否存在