gpt4 book ai didi

ios - 在 Swift 中将 Any 类型的数据转换为字符串数组

转载 作者:行者123 更新时间:2023-11-29 05:11:16 31 4
gpt4 key购买 nike

因此,在使用 swift 和 firebase 开发应用程序时,我遇到了一个问题,我有一个 TableView ,我在其中将数据添加为日期,但是当我检索它们时,我希望它们按我添加时的方式排序所以最后一项将位于最后一个索引处。基本上我检索一个数据 block 作为任何类型

Optional({
"-Ly6Njj9vNH_T9umxDwS" = "01-08-2020";
"-Ly6U4vzEAGvIC0Yblnl" = "12-08-2020";
"-Ly6U7_91jW5tajpX7k0" = "11-08-2020";
"-Ly6UG6HYqTMq1NaRehI" = "10-08-2020";
})

所以在这里你可以看到它们从上到下编号正确,但是当我尝试使用将它们放入数组时

data as? [String]

这不起作用,但我可以

data as [String: String]

但这并不能保持顺序,我知道我可以添加时间戳等,但是如果我已经正确格式化了数据,但是是 Any 类型,则必须有一种方法将其转换为数组

最佳答案

字典没有真正的顺序;打印输出的顺序没有意义并且可以改变。我们可以在不引用 firebase 的情况下重现此内容:

let d : NSDictionary = [
"-Ly6Njj9vNH_T9umxDwS" : "01-08-2020",
"-Ly6U4vzEAGvIC0Yblnl" : "12-08-2020",
"-Ly6U7_91jW5tajpX7k0" : "11-08-2020",
"-Ly6UG6HYqTMq1NaRehI" : "10-08-2020"
]
print(d)
//{
// "-Ly6Njj9vNH_T9umxDwS" = "01-08-2020";
// "-Ly6U4vzEAGvIC0Yblnl" = "12-08-2020";
// "-Ly6U7_91jW5tajpX7k0" = "11-08-2020";
// "-Ly6UG6HYqTMq1NaRehI" = "10-08-2020";
//}

let d2 = d as! [String:String]
print(d2)
// ["-Ly6Njj9vNH_T9umxDwS": "01-08-2020",
"-Ly6U4vzEAGvIC0Yblnl": "12-08-2020",
"-Ly6UG6HYqTMq1NaRehI": "10-08-2020",
"-Ly6U7_91jW5tajpX7k0": "11-08-2020"]

因此,如果您想要一个有序的对列表,您必须使用数组,并且必须自己以某种方式对其进行排序,大概使用时间戳。但正如评论所说,该顺序键的顺序。

let arr = Array(d2).sorted {$0.key < $1.key}
print(arr)
//[(key: "-Ly6Njj9vNH_T9umxDwS", value: "01-08-2020"),
// (key: "-Ly6U4vzEAGvIC0Yblnl", value: "12-08-2020"),
// (key: "-Ly6U7_91jW5tajpX7k0", value: "11-08-2020"),
// (key: "-Ly6UG6HYqTMq1NaRehI", value: "10-08-2020")]

如果您想要的只是日期字符串,只需将其映射到其即可。顺序被保留,因为它们现在是数组。

let arr2 = arr.map {$0.value}
print(arr2)
// ["01-08-2020", "12-08-2020", "11-08-2020", "10-08-2020"]

关于ios - 在 Swift 中将 Any 类型的数据转换为字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59655450/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com