【发布时间】:2017-11-29 09:16:04
【问题描述】:
我有下一个错误:尝试使用现有主键值“96292”创建“TypeId”类型的对象。 之后我就崩溃了。
【问题讨论】:
-
你必须取出带有
TypeID的对象,然后修改它,你不能创建具有主键的对象的副本 -
具有相同的主键值。如果存在则更新对象。
我有下一个错误:尝试使用现有主键值“96292”创建“TypeId”类型的对象。 之后我就崩溃了。
【问题讨论】:
TypeID的对象,然后修改它,你不能创建具有主键的对象的副本
使用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 的意见,如果它实际上不是一个新对象,则更新它。
【讨论】: