【发布时间】:2020-05-12 08:03:43
【问题描述】:
如何通过 indexPath 或类似的方式从 firebase 实时数据库中读取数据?
JSON:
{
"2020" : {
"May" : {
"01" : {
"Room:2" : {
"Shift2" : {
"3" : {
"breaks" : {
"break d2M" : {
"endTime" : "00:39:22",
"startTime" : "00:24:17",
"totalTime" : "0 h 15 min 5 sec",
"totalTime70" : "905"
}
},
"endNotes" : {
"Notes" : "15 boxes worth also filled and sealed and labelled as cutter broke.",
"Pod" : "A-35",
"customer" : "Mc",
"numberOfPeople" : "4",
"quantity" : "18432",
"reasonOfRejects" : "Seal",
"rejects" : "5",
"teamLeader" : "Lydia "
},
"times" : {
"endCleaning" : "01:32:14",
"endTime" : "01:32:12",
"endTime70" : "15927",
"setUpToEndCleaning" : "4 h 25 min 30 sec",
"startCleaning" : "01:32:13",
"startRunToEndEun" : "4 h 25 min 27 sec",
"timeOfCleaning" : "0 h 0 min 1 sec",
"timeOfCleaning70" : "1",
"timeOfWork" : "4 h 25 min 27 sec",
"timeOfWork70" : "15930"
}
}
}
}
},
"22" : {
"Shift1" : [ null, {
"breaks" : {
"break 50B" : {
"endTime" : "8:28:56 AM",
"startTime" : "8:28:55 AM",
"totalTime" : "0 hours 0 minutes 1 seconds",
"totalTime70" : "1"
},
"break NLr" : {
"endTime" : "8:28:12 AM",
"startTime" : "8:28:11 AM",
"totalTime" : "0 hours 0 minutes 1 seconds",
"totalTime70" : "1"
}
},
"endNotes" : {
"Notes" : "Test note",
"Pod" : "B-22",
"customer" : "Germany",
"numberOfPeople" : "9",
"quantity" : "4200",
"reasonOfRejects" : "Test",
"rejects" : "30",
"teamLeader" : "Borys"
},
"issues" : {
"Issue d0c" : {
"Note" : "fight",
"Type" : "Multivac - not sealing",
"issueStartTime" : "8:28:09 AM",
"solvedTime" : "8:28:10 AM",
"timeOfIssue" : "0 hours 0 minutes 1 seconds",
"timeOfIssue70" : "1"
},
"Issue nCP" : {
"Note" : "sdf sdfgsdfg ",
"Type" : "Eric - not dosing correctly",
"issueStartTime" : "8:28:17 AM",
"solvedTime" : "8:28:19 AM",
"timeOfIssue" : "0 hours 0 minutes 2 seconds",
"timeOfIssue70" : "2"
}
},
"main" : {
"didSend" : "NO",
"id" : "ROOM2POD3",
"numberOfTargets" : "3999",
"product" : "PRODUCT: HFN-0007 Cajun Spice Mix / Cajun Kryddmix / Cajun Spice Mix 4g"
},
"times" : {
"endCleaning" : "8:28:59 AM",
"endTime" : "8:28:45 AM",
"endTime70" : "48",
"setUpTime" : "0 hours 0 minutes 30 seconds",
"setUpTime70" : "30",
"startCleaning" : "8:28:48 AM",
"startSetUpTime" : "8:27:27 AM",
"startTime" : "8:27:57 AM",
"timeOfCleaning" : "0 hours 0 minutes 11 seconds",
"timeOfCleaning70" : "11",
"timeOfWork" : "0 hours 1 minutes 2 seconds",
"timeOfWork70" : "62"
}
}, {
"breaks" : {
"break tmQ" : {
"endTime" : "8:34:37 AM",
"startTime" : "8:34:35 AM",
"totalTime" : "0 h 0 min 2 sec",
"totalTime70" : "2"
}
},
"endNotes" : {
"Notes" : "I have no idea",
"Pod" : "C-35",
"customer" : "HeliHansen",
"numberOfPeople" : "8",
"quantity" : "900",
"reasonOfRejects" : "Something",
"rejects" : "20",
"teamLeader" : "Mark"
},
"issues" : {
"Issue Epe" : {
"Note" : "dsfgsdfg",
"Type" : "Hot Water Tank - hot water has ran cold",
"issueStartTime" : "8:34:24 AM",
"solvedTime" : "8:34:25 AM",
"timeOfIssue" : "0 h 0 min 1 sec",
"timeOfIssue70" : "1"
},
"Issue fEq" : {
"Note" : "sdfgsdfg",
"Type" : "Hot Water Tank - hot water has ran cold",
"issueStartTime" : "8:34:28 AM",
"solvedTime" : "8:34:33 AM",
"timeOfIssue" : "0 h 0 min 5 sec",
"timeOfIssue70" : "5"
}
},
"main" : {
"didSend" : "NO",
"id" : "UFNGU877",
"numberOfTargets" : "800",
"product" : "PRODUCT: HFN-0006 Cajun Spice Mix / Cajun Kryddmix / Cajun Spice Mix 2g"
},
"times" : {
"endCleaning" : "8:35:15 AM",
"endTime" : "8:35:09 AM",
"endTime70" : "53",
"setUpTime" : "0 h 0 min 15 sec",
"setUpTime70" : "15",
"startCleaning" : "8:35:10 AM",
"startSetUpTime" : "8:34:01 AM",
"startTime" : "8:34:16 AM",
"timeOfCleaning" : "0 h 0 min 5 sec",
"timeOfCleaning70" : "5",
"timeOfWork" : "0 h 0 min 59 sec",
"timeOfWork70" : "59"
}
}, {
"breaks" : {
"break DKf" : {
"endTime" : "10:20:05",
"startTime" : "10:20:04",
"totalTime" : "0 h 0 min 1 sec",
"totalTime70" : "1"
},
"break s8y" : {
"endTime" : "10:20:22",
"startTime" : "10:20:20",
"totalTime" : "0 h 0 min 2 sec",
"totalTime70" : "2"
}
},
"endNotes" : {
"Notes" : "Test test",
"Pod" : "C-35",
"customer" : "Algeier",
"numberOfPeople" : "9",
"quantity" : "11000",
"reasonOfRejects" : "Test",
"rejects" : "500",
"teamLeader" : "Natan"
},
"issues" : {
"Issue Xjh" : {
"Note" : "buvbtg",
"Type" : "Hot Water Tank - hot water has ran cold",
"issueStartTime" : "10:20:14",
"solvedTime" : "10:20:18",
"timeOfIssue" : "0 h 0 min 4 sec",
"timeOfIssue70" : "4"
}
},
"main" : {
"didSend" : "NO",
"id" : "NATAN",
"numberOfTargets" : "10000",
"product" : "PRODUCT: HFN-0008 Cashews 20g"
},
"times" : {
"endCleaning" : "10:21:04",
"endTime" : "10:20:47",
"endTime70" : "40",
"setUpTime" : "0 h 0 min 23 sec",
"setUpTime70" : "23",
"setUpToEndCleaning" : "0 h 1 min 20 sec",
"startCleaning" : "10:20:48",
"startSetUpTime" : "10:19:44",
"startTime" : "10:20:07",
"timeOfCleaning" : "0 h 0 min 16 sec",
"timeOfCleaning70" : "16",
"timeOfWork" : "0 h 0 min 57 sec",
"timeOfWork70" : "57"
}
} ]
}
我想阅读所有“numberOfTargets”并打印这些值。我怎样才能制作这样的路径: “2020 -> 5 月 -> 11 ->(第一个索引)-> 主要 -> numberOfTargets”? 它不是恒定的,所以我不知道它的名称。是否可以通过索引号来做到这一点? 我尝试了不同的方法,但我没有找到解决方案。
我也尝试过类似的方法,但我认为这是错误的,我不知道该怎么做:)
func allTargets() {
let ref1 = ref.child("\(av.currentYear())/\(av.currentMonth())/\(av.currentDay())")
ref1.observeSingleEvent(of: .value) { (snapshot) in
let value = snapshot.value as? NSDictionary
let numberOfTargets = value?.allKeys
print(numberOfTargets)
}
}
【问题讨论】:
-
最好将代码和结构包含为 文本,而不是图像。这样,如果答案中需要它们,可以复制和粘贴它们。要获取您的 Firebase 结构,请使用 Firebase 控制台->导出 JSON,然后复制并粘贴您的结构的 sn-p。
标签: ios swift database firebase indexing