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

时间:2015-02-16 00:44:50

标签: ios swift firebase

我想推送一个包含字符串,数字和日期的数组。我是否需要单独更新,还是有其他方法可以完成此任务?

示例:

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。它被存储为带引号的String。

1 个答案:

答案 0 :(得分:1)

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

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

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