【问题标题】:Swift/Firebase sortingSwift/Firebase 排序
【发布时间】:2016-07-06 01:38:35
【问题描述】:

我目前遇到一些关于从 firebase 进行表格视图排序的问题。我想要实现的是在表格视图中列出 5 个不同的价格层,全部命名为 (tier1, tier5, tier12, tier24, tierPermanent) - 每个都包含一个值(价格)。

但是,在从数据库中获取这些值时,我发现在表格视图中显示这些值相当困难 - 既包含文本(时间)又包含价格层。我现在正在做的是,我正在使用 observeEventType 来显示所有值,然后将每个值存储在字典中。之后,我将它附加到 [[String:String]] 类型的字典数组中。

我正在努力解决的问题是在表格视图中按降序显示。请注意,所有这 5 个值都是可选的,因此它们可能不包含任何值 - 所以不是在第一行显示一个值,在第二行显示一个空白单元格,然后在第三行显示一个新值- 我希望它与值相比显示降序。 (如果永久值包含一个值,则永久值将始终位于顶部,否则 tier24 将位于顶部,否则 tier12。)。对于每个单元格。

我知道我会使用 cell.nameLabel.text = cell[indexPath.row]["tier.."] 作为访问唯一值?字符串 - 但问题是我需要进行某种排序,并确保数据不会显示两次。 (键和值的顺序 - 在同一个单元格中同时显示键和值。)。

有什么想法可以解决这个问题吗?

提前致谢。

【问题讨论】:

标签: sorting firebase tableview firebase-realtime-database


【解决方案1】:

确实没有足够的数据来完全解决这个问题,但是这个怎么样:

Firebase 结构:

tiers
  -Y0998uas9j
    tier_type: tier_24
    time: 20160705130100
    sort_order: 1
  -Ykja9s9js9
    tier_type: tier_05
    time: 20160705130300
    sort_order: 3
  -Yukl9jh8sj
    tier_type: tier_permanent
    time: 20160705130500
    sort_order: 0

层有一个排序顺序以保持它们的正确顺序。

tier_permanent = 0
tier_24 = 1
tier_12 = 2
tier_05 = 3
tier_01 = 4

和一些代码来读取它们并保持排序,降序:

    var myArray = [[String:String]]()
    let tiersRef = self.myRootRef.child("tiers")
    tiersRef.observeSingleEventOfType(.Value, withBlock: { snapshot in

        for child in snapshot.children {
            var dict = [String: String]()
            dict["fbKey"] = child.key as String
            dict["tier_type"] = child.value["tier_type"] as? String
            dict["timestam"] = child.value["time"] as? String
            dict["sort_order"] = child.value["sort_order"] as? String
            myArray.append(dict)
        }

        myArray.sortInPlace( {$0["sort_order"] < $1["sort_order"]} )

        self.mySuperTableView.reloadData()

        for dict in myArray { //meh, print them so show they are sorted
            print(dict)
        }
    })

这个地址:保持它们排序,降序,如果轮胎不存在于数据库中,它们显然不会被读入。

但问题是,他对层名称和价值(时间?)之间的相关性的质疑并不清楚。一旦提供更多信息,我会更新。

【讨论】:

  • 感谢您写得很好且解释清楚的答案 - 但是,我通过创建 5 个单独的唯一表格视图单元格类解决了我的问题。但再次,非常感谢你!
猜你喜欢
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多