日付で取得したデータをソートしようとしていますが、動作していません。 これは私がソートするデータである。Firebaseは日付でデータを並べ替えます
{
"events": {
"Saturday, May 6, 2016" : [ null, {
"Id" : 3,
"LogoImage" : "image_url",
"MainImage" : "image_url",
"Name" : "event_name"
}, {
"Id" : 4,
"LogoImage" : "image_url",
"MainImage" : "image_url",
"Name" : "event_name"
} ],
"Saturday, April 8, 2016" : [ null, {
"Id" : 1,
"LogoImage" : "image_url",
"MainImage" : "image_url",
"Name" : "event_name"
}, {
"Id" : 2,
"LogoImage" : "image_url",
"MainImage" : "image_url",
"Name" : "event_name"
} ]
}
}
私は彼らが日付順たいが、問題は日付がアイテムのリストのキーであることです。 どうすればいいですか?
私はこれを試してみたが、それは動作していない:
ref.child("events").queryOrderedByKey().observeSingleEvent(of: .value, with: { (snapshot) in
let results = snapshot.value as! [String: Any]
for (eventDate, arr) in results {
let eventsDate = EventsDate()
eventsDate.eventsDate = eventDate
print(eventDate)
}
})
おかげ
FirebaseがあなたのためにIDを作成するようにしてください。それらはデータが作成された時刻を使って生成され、自動的にデータをソートします – Starlord
'queryOrderedByKey()'にキーを提供する必要はありませんか? –
*コールバック内で*あなたは何をしますか?スナップショットを辞書に変換している可能性は非常に高いです(辞書が本質的に順序付けされていないため)。正しい/キー順で項目を確実に取得するには、 'snapshot.children'を繰り返してください。 –