我想推送一个包含字符串,数字和日期的数组。我是否需要单独更新,还是有其他方法可以完成此任务?
示例:
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。
答案 0 :(得分:1)
Firebase API需要NSDictionary
updateChildValues
。 NSDictionary
不能包含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