ios - 如何使用 Swift 对字典数据进行分组

标签 ios xcode swift uitableview dictionary

我有这种格式的字典数据。

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)图像一样。

Prototype

最佳答案

这是一个两步问题(我们将在纯 Swift 中解决)。首先,我们需要确定我们有哪些部分(在本例中,只有 AB。这很简单:

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/

相关文章:

cocoa - iTunes Connect 图标渲染

ios - 如何找出哪个类占用最多内存?

ios - 从 UIButton 中获取 UIButton 的标签,该 UIButton 位于此 UIButton 呈现的弹出窗口中

iOS Swift3 TextView 行在错误的位置

iphone - iOS - UITableView 部分标题内的 UILabel + UIActivityIndi​​catorView

ios - 如何在 swift 中返回一个 var

ios - 如何从 iOS 中其他 View Controller 的 TextView 中获取 NSDictionary 中的值

ios - 在 Swift 中向数组添加元素

xcode - 如何在 Xcode 中更改失焦文本选择颜色?

ios - iOS 5 VS 中的增强现实。 iOS 4 - 纹理在部署后不加载