gpt4 book ai didi

ios - 从 Swift 数组中删除具有重复属性的对象

转载 作者:行者123 更新时间:2023-11-28 07:52:01 26 4
gpt4 key购买 nike

这里的问题涉及从数组中删除重复的对象:

Removing duplicate elements from an array in Swift

相反,我需要删除本身不重复但具有特定重复属性(例如id)的对象。


我有一个包含我的 Post 对象的数组。每个 Post 都有一个 id 属性。

有没有比在我的数组中查找重复的帖子 ID 更有效的方法

for post1 in posts {
for post2 in posts {
if post1.id == post2.id {
posts.removeObject(post2)
}
}
}

最佳答案

我将提出 2 种解决方案。

这两种方法都需要 PostHashable 和 Equatable

使 Post 符合 Hashable 和 Equatable

这里我假设您的 Post 结构(或类)有一个类型为 Stringid 属性。

struct Post: Hashable, Equatable {
let id: String
var hashValue: Int { get { return id.hashValue } }
}

func ==(left:Post, right:Post) -> Bool {
return left.id == right.id
}

方案一(丢失原来的顺序)

要删除重复项,您可以使用 Set

let uniquePosts = Array(Set(posts))

方案2(保留顺序)

var alreadyThere = Set<Post>()
let uniquePosts = posts.flatMap { (post) -> Post? in
guard !alreadyThere.contains(post) else { return nil }
alreadyThere.insert(post)
return post
}

关于ios - 从 Swift 数组中删除具有重复属性的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49392603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com