ios - 如何添加唯一值来区分 Swift 数组中的重复数据?

标签 ios swift duplicates find-occurrences

有人可以为我指出如何解决此问题的正确方向吗?

我正在使用下面结构中的值创建表格单元格。创建单元格并在创建单元格时将数据显示在单元格中,效果很好。

问题是某些单元格具有相同的名称,并且我从结构数据中为每个单元格都有一个单独的 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

更新:

创建元素(您的数据结构)时,您应该在添加同名元素之前检查元素数组,如果存在同名元素,则可以增加未存储为属性的计数器结构。

您可以使用mapDictionary(_: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/

相关文章:

IOS Swift - 搜索广告 API requestAttributionDetails 只返回 Nil

mysql - 查找一列不同的 "duplicate"行

ios - 自定义字体未在设备上显示,但在模拟器上显示

ios - 如何为 UICollectionView 的第一个元素设置偏移量

ios - 如何将图像数组转换为字符串

CALayers drawInContext 中的 iOS 绘图在视网膜上像素化或模糊

ios - 单击 Collection View 单元格时振动 iPhone 无法正常工作 Swift

ios - Swift Firebase 不调用 observeSingleEvent 的方法

MySQL关于重复键删除

Java JButton 文本和焦点显示不正确、重叠