有人可以为我指出如何解决此问题的正确方向吗?
我正在使用下面结构中的值创建表格单元格。创建单元格并在创建单元格时将数据显示在单元格中,效果很好。
问题是某些单元格具有相同的名称,并且我从结构数据中为每个单元格都有一个单独的 ID,但我需要用户知道在重复项中首先创建了哪个重复项。有点像子号码。
例如:1:苹果 -1 , 2:梨 -1 , 3:苹果 -2
1(在所有单元格中的位置)- Apple(单元格名称)- 1(值基于有多少个单元格被命名为 apple)
我创建的 func idName() 告诉我们某个名称出现了多少次,但是我如何分解它以便数据像上面一样显示?
struct Data {
var id: Int
var name: String
var color: String
var time: TimeInterval
var sessionId: Int
var userId: Int
}
func idName () {
let idElement = elements //another variable is used to grab the Array
var counts: [String: Int] = [:]
var idValue: Int
for id in idElement {
counts[id.name] = (counts[id.name] ?? 0) + 1
for (key, value) in counts {
print("\(key) occurs \(value) time(s)")
}
}
}
最佳答案
"I need the user to know which one of the duplicates was created first."
如何在创建每个项目时为其添加日期?
var date: Date = Date()
这样你就可以对它们进行排序...
myObjects = myObjects.sorted(by: {
$0.date.compare($1.date) == .orderedDescending
})
另一种方法是添加 UUID ,这将为您提供一个唯一的标识符供引用:
var uuid: UUID = UUID()
var someObjectID = myObject.uuid.uuidString
更新:
创建元素(您的数据结构)时,您应该在添加同名元素之前检查元素数组,如果存在同名元素,则可以增加未存储为属性的计数器结构。
您可以使用map
和Dictionary(_:uniqueingKeysWith:)
。
返回映射元素的数组(数据结构的数组)。
let mappedElements = elements.map($0.name, 1)
然后,计算重复项并创建一个包含匹配项数量的字典。
let counts = Dictionary(mappedElements, uniquingKeysWith: +)
这将导致["apple": 3, "pear": 2, "peach": 1]
等。
关于ios - 如何添加唯一值来区分 Swift 数组中的重复数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51757929/