如何解决Swift Realm:使用相同的主键添加新对象时如何处理错误?
我在项目中使用RealmSwift。 (我是新来的领域) 当我想使用相同的主键添加新对象时,我的应用因以下错误而崩溃:
尝试使用现有的主键值创建“卡”类型的对象。
class Card: Object,Decodable {
@objc dynamic var pan = ""
@objc dynamic var title = ""
override class func primaryKey() -> String? {
return CodingKeys.pan.stringValue
}
private enum CodingKeys: CodingKey {
case pan
case title
}
required convenience init(from decoder: Decoder) throws {
self.init()
let values = try decoder.container(keyedBy: CodingKeys.self)
self.pan = try values.decode(String.self,forKey: .pan)
self.title = ""
}
}
class DatabaseRequest {
func addCard(_ card: Card) -> Bool {
let realm = try! Realm()
do {
try realm.write {
realm.add(card)
}
return true
} catch let error as NSError {
print(error)
return false
}
}
}
在将其添加到数据库之前,我一直发现存在一些解决方案,例如具有相同主键的check对象。
为什么这部分代码从未执行过?用途是什么?
} catch let error as NSError {
print(error)
return false
}
解决方法
默认情况下,update
属性为.error
,这意味着当您尝试创建或添加具有相同主键的对象时会出现错误。
为防止这种情况,只需将update
属性设置为.modifed
或.all
realm.add(card,update: .all)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。