如何在 Firebase 中推送多种类型的数据?

Posted

技术标签:

【中文标题】如何在 Firebase 中推送多种类型的数据?【英文标题】:How to push data with multiple types in Firebase? 【发布时间】:2015-02-16 00:44:49 【问题描述】:

我想推送一个包含字符串、数字和日期的数组。我必须单独更新还是有其他方法可以做到这一点?

例子:

var categories : [String] = self.parseCategories()

var standbyDataStrings = [
    "firstName":firstName,
    "lastName":lastName,
    "categories": categories,
    "time_stamp":self.date.timeIntervalSince1970
]
var standbyDataNums = [
    "radius":nf.numberFromString(self.helpRadiusLabel.text!),
    "duration":nf.numberFromString(self.helpDurationLabel.text!)        
]
standbyUserRef.updateChildValues(standbyDataStrings)
standbyUserRef.updateChildValues(standbyDataNums)  // this gives me a error "string is not identical to NSObject"

结合standByDataStrings 和standbyDataNums 给我一个错误。

或者有没有办法从 Firebase 检索字符串并将其用作 int。它被存储为带有引号的字符串。

【问题讨论】:

【参考方案1】:

Firebase API 要求 NSDictionary 对应 updateChildValuesNSDictionary 不能包含 nil 值。另一方面,普通的 Swift 字典可以包含 nil 值。

numberFromString 的返回类型是NSNumber?,所以 Swift 推断字典可能包含nil,因此它不能传递给updateChildValues。通过使用! 显式强制非零值,您可以编译此代码:

var standbyDataNums = [ 
    "radius":nf.numberFromString(self.helpRadiusLabel.text!)!,
    "duration":nf.numberFromString(self.helpDurationLabel.text!)!        
]
standbyUserRef.updateChildValues(standbyDataNums) // now type checks

【讨论】:

以上是关于如何在 Firebase 中推送多种类型的数据?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase推送通知如何在IOS上运行?

如何在单个 Firebase 数据库中为多个应用构建推送令牌

如何从fireBase推送通知swift 4中获取数据

推送到firebase数据库时如何设置推送键?

如何处理收到推送通知后恢复应用程序的情况

如何为返回多种可能数据类型的函数记录 :rtype:? [复制]