我正在读取包含阵列的Firebase Data Snapshot中的数据。 我以[String:AnyObject]的形式将这个快照向下转换为变量say fetchedDict。现在我想将sensorValues转换为快速可读数组。我检查sensorValues的dynamicType如何将Firebase数组转换为Swift数组?
print(fetchedDict!["sensorValues"].dynamicType)
这是可选
我试图将其转换阵列两种方法:
- 它溯造型到的NSArray,[INT]但它没有工作。
- 写了一个镜像函数(见最后)在操场上工作,但不幸在iOS应用程序中。它给了我无法将类型'Swift.Array'(0x117a24028)的值转换为'Swift.Int'。
有人能指导我解决这个问题吗?谢谢!
rootRef!.observeEventType(.Value, withBlock: { (snapshot) in
for child in snapshot.children.allObjects {
let snap = child as! FIRDataSnapshot
let fetchedDict = snap.value as? [String: AnyObject]
})
这是fetchedDict:这在iOS应用没有工作
[
"activityDuration": 15;
"sensorValues": (
5,
24,
24,
13,
22,
4,
42,
13,
3,
4
);
"timestamp": 20160713184023;
]
镜像功能。试过任何以及AnyObject作为参数类型。这段代码虽然在操场上工作。
func tupleToArray(sensorValues: Any) -> [Int] {
let mirror = Mirror(reflecting: sensorValues)
var arr = [Int]()
for child in mirror.children{
let stringedValue = (child.value) as! Int
arr.append(stringedValue)
}
return arr
}
为什么'child.value'?为什么不只是把孩子当作! Int'? –
是否像这样的工作循环? for fetchedDict![“sensorValues”] as! Int –
@ÖzgürErsil也试过了......它给出了警告从子类转换为无关类型'int'总是失败。当我调用函数 - 执行被中断。 –