我有一个包含我的Post对象的数组。每个人Post都有id财产。
Post
id
有没有比我的数组中找到重复的帖子ID的更有效方法?
for post1 in posts { for post2 in posts { if post1.id == post2.id { posts.removeObject(post2) } } }
我将建议2解决方案。
两种方法都必须Post是Hashable平等的
Hashable
在这里,我假设您的Poststruct(或类)具有idtype 的属性String。
String
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
Set
let uniquePosts = Array(Set(posts))
var alreadyThere = Set<Post>() let uniquePosts = posts.flatMap { (post) -> Post? in guard !alreadyThere.contains(post) else { return nil } alreadyThere.insert(post) return post }