我正在尝试迭代一个数组并找到所有重复项。我想用数组中的每个唯一项目之一填充我的 TableView,并能够使用分段控制器按项目名称或项目计数进行排序...
我希望单元格具有 labelOne = 唯一数组对象,而 labelTwo = 该对象重复的次数。
例如
var exampleArr = ["apple", "apple", "apple", "apple", "cat", "cat", "laptop"]
Run Code Online (Sandbox Code Playgroud)
我希望能够说苹果:4,猫:2,笔记本电脑:1
我担心的是这些答案(来自超链接)返回字典。
是否可以使用字典创建可排序的表视图?或者有更好的方法来做到这一点
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))
}
Run Code Online (Sandbox Code Playgroud)
要在表视图中使用该集合,请根据唯一对象创建一个数组
var dataArray = [String]()
dataArray = countedSet.allObjects as! [String]
Run Code Online (Sandbox Code Playgroud)
您甚至可以对数组进行排序
dataArray.sort()
Run Code Online (Sandbox Code Playgroud)
在cellForRow获取项目来自dataArray和出现次数来自countedSet
let item = dataArray[indexPath.row]
let occurrences = countedSet.count(for: item)
Run Code Online (Sandbox Code Playgroud)
笔记:
NSCountedSet不知道包含项的类型,因此如果您需要该类型,则必须对其进行强制转换:
print(item as! String, countedSet.count(for: item))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
963 次 |
| 最近记录: |