我有几个传感器将数据发送到公司服务器。从该服务器,我使用WebHook API将数据推送到我自己的Firebase服务器。我注意到,从公司服务器发送到Firebase服务器时,数据结构会发生变化。数据最初的结构如下:
{
"gatewayMessage":{
"gatewayID":"111346" ,
"gatewayName":"CGW2+Verizon+-+111346" ,
"accountID":"8963",
"networkID":"14979" ,
"messageType":"0" ,
"power":"0",
"batteryLevel": "101" ,
"date": "2016-05-23 15:10:29",
"count":"1",
"signalStrength": "30",
"pendingChange": "False"
},
"sensorMessages":[
{
"sensorID":"129238" ,
"sensorName":"Vibration+Meter+5" ,
"applicationID":"95" ,
"networkID":"14979" ,
"dataMessageGUID":"0f871139-a8b2-4df9-b783-effaaa90e1d8",
"state": "1" ,
"messageDate": "2016-05-23 15:10:25",
"rawData":"1.9%7c1%7c13%7c12%7c12%7c21%7c100%7c1",
"dataType": "Speed|Speed|Speed|Frequency|Frequency|Frequency|Percentage",
"dataValue": "1.9|1|13|12|12|21|100",
"batteryLevel": "100",
"signalStrength": "24",
"pendingChange": "True"
}
]
}
然后,当数据发送到Firebase并使用Swift在Xcode中检索时,它显示如下:
{
"-KIT9FvatZT2wNfS3JKZ" = {
gatewayMessage = {
accountID = 8963;
batteryLevel = 101;
count = 4;
date = "2016-05-23 15:08:29";
gatewayID = 111346;
gatewayName = "CGW2+Verizon+-+111346";
messageType = 0;
networkID = 14979;
pendingChange = False;
power = 0;
signalStrength = 30;
};
sensorMessages = (
{
applicationID = 95;
batteryLevel = 100;
dataMessageGUID = "199c0da1-be38-4bac-a36c-c5cdb5f2ed37";
dataType = "Speed|Speed|Speed|Frequency|Frequency|Frequency|Percentage";
dataValue = "0|0|0|0|0|0|0";
messageDate = "2016-05-23 15:08:25";
networkID = 14979;
pendingChange = True;
rawData = "0%7c0%7c0%7c0%7c0%7c0%7c0%7c1";
sensorID = 129238;
sensorName = "Vibration+Meter+5";
signalStrength = 24;
state = 1;
}
);
};
由于这种奇怪的格式化,我无法读入Xcode中的相关数据。老实说,我只关心“sensorMessages”子,特别是“sensorID”,“batteryLevel”和“dataValue”字段。如果有人能够在检索上述数据方面为我提供一些帮助,我们将不胜感激。
同样,重申一下,我只是试图在Xcode中检索“sensorMessages”数据。感谢任何帮助,谢谢!
克里斯
我尝试了以下操作来访问和打印“sensorID”参数:
let ref = Firebase(url:"https://glowing-fire-3705.firebaseio.com/data")
ref.queryOrderedByChild("sensorMessages/sensorID").observeEventType(.ChildAdded, withBlock: { snapshot in
var sensorID = snapshot.value["sensorID"]
print("the sensor ID is \(sensorID)")
})
这导致sensorID的值为“nil”,我知道情况并非如此。