【问题标题】:What's best way to prevent duplicating object in Realm?防止在领域中复制对象的最佳方法是什么?
【发布时间】:2017-11-29 09:16:04
【问题描述】:

我有下一个错误:尝试使用现有主键值“96292”创建“TypeId”类型的对象。 之后我就崩溃了。

【问题讨论】:

  • 你必须取出带有TypeID的对象,然后修改它,你不能创建具有主键的对象的副本
  • 具有相同的主键值。如果存在则更新对象。

标签: ios database realm


【解决方案1】:

使用String类型作为主键而不是Int类型,并为每个对象使用UUID,这样可以避免重复键。

class AModel: Object {
    @objc dynamic var id = UUID().uuidString

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

或者,如果你想使用 Int,并且你确定一秒钟内只会创建一个对象,你也可以使用时间戳值来避免这种情况:

class AModel: Object {
    @objc dynamic var id = Date().timeIntervalSince1970

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

同意@Tj3n 和@EpicPandaForce 的意见,如果它实际上不是一个新对象,则更新它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 2011-01-07
    相关资源
    最近更新 更多