获取数组中的每个唯一元素并保持tableview swift的计数

时间:2017-06-14 06:20:24

标签: swift

我正在尝试遍历数组并找到所有重复项。我想用数组中每个独特项目中的一个填充我的TableView,并且能够使用分段控制器按项目名称或项目计数进行排序......

我希望单元格具有labelOne =唯一的数组对象,而labelTwo =该对象重复的次数。

例如

var exampleArr = ["apple", "apple", "apple", "apple", "cat", "cat", "laptop"]

我希望能够说 apple:4,cat:2,笔记本电脑:1

I found this answer...

我担心的是这些答案(来自超链接)会返回词典。

是否可以使用字典创建可排序的表视图?或者有更好的方法来做到这一点

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))