[英]How do I group Dictionary Data with Swift
我的字典数据是这种格式的。
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"
]
]
有谁知道如何将[AZ]中的tableView分组,例如下面的Swift原型图像。
这是一个两步问题(我们将在纯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
值。 作为一个侧面说明,如果你想正常化的字母,追加.uppercaseString
将信投入前letters
。
然后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
}
然后,您可以按自己喜欢的方式排列数据,现在知道如何既按键排序又可以检测要显示的字母。 希望这可以帮助!
您需要UITableViewDataSource API。
图像显示的表是带有标题和部分的普通表视图。
您要实现的一些方法是numberOfSectionsInTableView
和titleForHeaderInSection
。 对于表旁边的可滚动索引,您需要sectionIndexTitlesForTableView
。 所有这些方法在上面的链接中进行了描述。
您可能会考虑对数组进行排序并按字母顺序将其分解,但是这样做可能会很昂贵,因此请不要在用户滚动时这样做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.