【问题标题】:Avoiding duplicates in array of class objects Swift 3避免类对象数组中的重复 Swift 3
【发布时间】:2017-05-31 03:59:43
【问题描述】:
var locationsArray = [StudentLocation]()

我有一个 StudentLocations 数组,我试图阻止任何可能来自同一个人的对象出现在数组中。

人们可以在数据库中发布有关其姓名/位置/个人资料 URL 等信息的帖子

根据数据库的设置方式,人们可以根据需要在同一位置以相同名称多次转发,因此一个用户可能会向用户名添加 10 个相同的帖子。

这些帖子中的每一个都将有不同的 UID,但如果家庭位置(纬度/经度)和名称完全相同,我认为我可以相当确信两个帖子来自同一用户。

如果主位置/名称与阵列中已有的另一个位置相同,防止将位置附加到阵列的最佳方法是什么?

【问题讨论】:

  • 如果您将 Equatable (==) 协议添加到 StudentLocation,您可以定义逻辑以确定两个对象是否相等,然后使用 Set 或 contains 方法过滤重复项。

标签: ios arrays swift sorting


【解决方案1】:

使用集合。

例如 var temp:Set<Int> = [1,2,3,4,5,1,2] 的结果将是 {2, 4, 5, 3, 1}

您可以将其用作var locationsArray: Set<StudentLocation>。然后您可以使用func insert(_ newMember: Element) -> (inserted: Bool, memberAfterInsert: Element) 插入一个新对象。如果该对象已经存在,则不会添加。您可以通过此方法从返回的对象中找到。

【讨论】:

  • 如果使用有序集,也几乎和数组一样
猜你喜欢
  • 1970-01-01
  • 2019-05-24
  • 1970-01-01
  • 2016-04-17
  • 2015-02-05
  • 2021-12-19
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
相关资源
最近更新 更多