我有这种格式的字典数据。
var data: [[String:AnyObject]] =
[
[
"id": "1",
"title": "A Title",
"Detail": "This is a String"
],
[
"id": "2",
"title": "A Title Again",
"Detail": "This is a String"
],
[
"id": "3",
"title": "B Title",
"Detail": "This is a String"
],
[
"id": "4",
"title": "B Title Again",
"Detail": "This is a String"
]
]
有没有人知道如何使用 Swift 从 [A-Z] 对我的 tableView 进行分组,就像下面的原型(prototype)图像一样。
最佳答案
这是一个两步问题(我们将在纯 Swift 中解决)。首先,我们需要确定我们有哪些部分(在本例中,只有 A
和 B
。这很简单:
var letters = Set<String>()
for element in data {
var title = element["title"] as? String
let letter = title?.substringToIndex(advance(title!.startIndex, 1))
letters.insert(letter!)
}
我们首先创建一组 String
对象,这样每个字母只代表一次。要获取第一个字符(在纯 Swift 中),我们必须使用 substringToIndex
并使用 advance
传入一个 String.Index
值。作为旁注,如果您想规范化字母,请在将字母插入 letters
之前附加 .uppercaseString
。
print(letters)
将输出 [A, B]
。
––
其次,我们需要通过title
键对data
进行排序。 Swift 使排序变得非常简单:
data.sort { element1, element2 in
let title1 = element1["title"] as? String
let title2 = element2["title"] as? String
return title1 < title2
}
然后您可以按照自己喜欢的方式排列数据,现在知道如何按键排序,以及检测要显示的字母。希望这对您有所帮助!
关于ios - 如何使用 Swift 对字典数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32163350/