列表中的重复条目

时间:2016-02-12 00:18:41

标签: ios swift realm

我有一个名为Rides的班级,里面有一个预订列表。当我在列表中添加新的预订时,它会附加相同的预订并创建“重复”。见附图。

这是添加条目的代码:

let reservation = RealmReservation(json: json["reservation"])
realm.add(reservation, update: true)
rides.reservations.append(reservation)

该课程的代码如下:

class RealmReservation: Object {
dynamic var id: Int = 0

override static func primaryKey() -> String {
  return "id"
}
end

如何确保列表中的唯一性?

谢谢!

Duplicate entry

2 个答案:

答案 0 :(得分:3)

乍一看,我可以看到三种方法来解决这个问题:

1)如果您的班级可以成为Hashable,您可以使用集合而不是列表。一套将为您管理唯一性。

rides.reservations.insert(reservation)

2)您也可以使用字典而不是列表(或者除此之外)。

rides.reservations[reservation.primaryKey()] = reservation

3)您可以在追加到列表之前测试现有条目:

 if !rides.reservations.contains({ $0.primaryKey() == reservation.primaryKey() })
 { rides.reservations.append(reservation) }

答案 1 :(得分:0)

正在附加相同预留的新实例,因为每次主键属性id值都不同。

由于您已将该属性标记为您的Realm对象的主键,因此只要id的值保持不变,请将add(_: update:)调用update并设置为true将更新您之前的对象,而不是添加新对象。

我的建议是检查生成id的位置,并确保它对于相同的预订保持一致。

如果您需要进一步说明,请与我们联系! :)