Swift 3:如何对Dictionary的键和struct的值进行排序

时间:2017-07-30 18:19:15

标签: uitableview sorting dictionary struct swift3

这是Swift 3的Struct,。我知道字典不是存储序列,就像数组一样,这是我的问题。我想在ViewArray中设置我的词典序列。我可以获得ctC Dictionary,但我如何对keysvalues进行排序,如我在ViewArray中所设置的那样,并感谢您的帮助。

struct CTArray {
    var ctname: String
    var ctkey: String
    var ctC: [String:String]

}

var ViewArray:[CTArray] = []

ViewArray += [CTArray(ctname: "kerish", ctkey: "KH", ctC: ["mon":"Apple", "kis":"aone", "Bat":"Best", "orlno":"bOne"])]
ViewArray += [CTArray(ctname: "tainers", ctkey: "TNN", ctC: ["letGor":"one", "washi":"testing", "monk":"lasth"])]
ViewArray += [CTArray(ctname: "techiu", ctkey: "TCU", ctC: ["22":"tt", "wke":"303", "lenth":"highest"])]

我想在我的TableView Cell中显示它们,如下所示:
   ViewArray [0] .ctC.key排序如[mon,kis,Bat,orlno]
   ViewArray [1] .ctC.key排序如[letGor,washi,monk]
   ViewArray [2] .ctC.value排序方式如[tt,303,最高]

2 个答案:

答案 0 :(得分:0)

var object1 = viewArray[0].ctC.flatMap({$0.key})
var object2 = viewArray[1].ctC.flatMap({$0.key})
var object3 = viewArray[2].ctC.flatMap({$0.value})
print(object1)
print(object2)
print(object3)

输出:

["Bat", "kis", "orlno", "mon"]
["letGor", "monk", "washi"]
["highest", "tt", "303"]

答案 1 :(得分:0)

我不清楚你在问什么,但是如果它有帮助我会提供这个。

  

我知道字典不像数组那样存储序列,这是我的问题。

如果您想按照其键的特定顺序访问字典,那么您可以按照所需的顺序创建一个仅包含键的数组,并使用它来访问字典。一个例子可能更容易理解:

从您的某个词典开始:

let dict = ["mon":"Apple", "kis":"aone", "Bat":"Best", "orlno":"bOne"]
print(dict)

此输出:

["Bat": "Best", "kis": "aone", "orlno": "bOne", "mon": "Apple"]

这不是你想要的。现在介绍一个密钥数组并使用它来访问字典:

let keyOrder = ["mon", "kis", "Bat", "orlno"]
for key in keyOrder
{
   print("\(key): \(dict[key]!)")
}

此输出:

mon: Apple
kis: aone
Bat: Best
orlno: bOne

这是你想要的订单。

可以在任何想要使用/ show / etc的地方使用相同的想法。按照特定顺序的键,通过使用keyOrder数组作为字典访问的一部分,您可以看起来好像字典条目按照您的顺序“按顺序存储”。

HTH