Я читаю данные из моментального снимка Firebase, который содержит массив. Я сбрасывал этот снимок как [String: AnyObject] в переменную say fetchedDict. Теперь я хочу, чтобы преобразовал sensorValues в быстро читаемый массив. Я проверил dynamicType из sensorValues Как преобразовать массив Firebase в Swift Array?
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:
[
"activityDuration": 15;
"sensorValues": (
5,
24,
24,
13,
22,
4,
42,
13,
3,
4
);
"timestamp": 20160713184023;
]
Зеркало функция, которая не работала в приложении IOS. Пробовал Any, а также 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'? –
делает цикл, как эта работа? для i в fetchedDict! ["SensorValues"] as! Int –
@ ÖzgürErsil Пробовал это тоже ... он дает предупреждение. Передача от ребенка к несвязанному типу «int» всегда терпит неудачу. И когда я вызываю функцию - выполнение прервано. –