ios - Firebase 按日期对数据排序

标签 ios swift firebase firebase-realtime-database

我正在尝试按日期对获得的数据进行排序,但它不起作用。 这是我要排序的数据:

{
"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 有一个漂亮的自动填充快捷方式 timestamps当它们写入数据库时​​以标准格式,但不幸的是,这只适用于您需要创建数据的时间。然而,为任意日期和时间生成时间戳并不困难,并且有很多库可以将其来回转换为您在 UI 中喜欢的任何人类可读格式。如果您对日期感兴趣,您可能可以使用 ISO-8601 等简单的可排序格式:

{
"events": {
  "2016-05-06" : [ null, {
    "Id" : 3,
    "LogoImage" : "image_url",
    "MainImage" : "image_url",
    "Name" : "event_name"
  }, {
    "Id" : 4,
    "LogoImage" : "image_url",
    "MainImage" : "image_url",
    "Name" : "event_name"
  } ],
  "2016-04-08" : [ null, {
    "Id" : 1,
    "LogoImage" : "image_url",
    "MainImage" : "image_url",
    "Name" : "event_name"
  }, {
    "Id" : 2,
    "LogoImage" : "image_url",
    "MainImage" : "image_url",
    "Name" : "event_name"
  } ]
 }
}

你用 arrays 做的事情也是非常不可取的在数据中,但这是另一个话题了。

关于ios - Firebase 按日期对数据排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42772942/

相关文章:

IOS - SWIFT - CollectionView -> ImageView 加载 URL 图片

ios - 如何在IOS中模拟陀螺仪反馈?

ios - 在 Swift 的 TableView 中填充数据时出现问题

ios - 尝试检查 View Controller 是否已加载,然后将其呈现在容器中(UISegmentedController)

ios - UITableViewCell 中的平移手势可以在整个桌面 View 上移动 ImageView ,而无需进入单元格下方

ios - 如何在SwiftUI中汇总过滤后的核心数据?

iphone - 使用 stringWithFormat 函数时如何更改字符串中文本的颜色?(iphone)

database - Firebase Firestore 查询 : "Error: 9 FAILED_PRECONDITION: The query requires an index. You can create it here"

javascript - 如何恢复根据从 Firebase 获取的数字生成的列表的顺序?

java - 如何将 FirebaseApp.initializeApp 用于 FirebaseRemoteConfig