我正在尝试遍历数组并找到所有重复项。我想用数组中每个独特项目中的一个填充我的TableView,并且能够使用分段控制器按项目名称或项目计数进行排序......
我希望单元格具有labelOne =唯一的数组对象,而labelTwo =该对象重复的次数。
例如
var exampleArr = ["apple", "apple", "apple", "apple", "cat", "cat", "laptop"]
我希望能够说 apple:4,cat:2,笔记本电脑:1
我担心的是这些答案(来自超链接)会返回词典。
是否可以使用字典创建可排序的表视图?或者有更好的方法来做到这一点
答案 0 :(得分:4)
NSCountedSet
可以做你想要的(需要Foundation
)
let exampleArr = ["apple", "apple", "apple", "apple", "cat", "cat", "laptop"]
let countedSet = NSCountedSet(array: exampleArr)
for item in countedSet {
print(item, countedSet.count(for: item))
}
要在表视图中使用该集,请从唯一对象
创建一个数组var dataArray = [String]()
dataArray = countedSet.allObjects as! [String]
您甚至可以对数组进行排序
dataArray.sort()
在cellForRow
中获取dataArray
中的项目和来自countedSet
let item = dataArray[indexPath.row]
let occurrences = countedSet.count(for: item)
注意:
NSCountedSet
不知道包含项目的类型,因此如果您需要类型,则必须将其投射:
print(item as! String, countedSet.count(for: item))