【发布时间】:2017-01-07 20:18:23
【问题描述】:
想要一些更新现有关注者的方法,如果不存在,请将其添加到数据库并将它们链接到类似用户
GETS CRASH OVER 附加在写入块中,由于重复的主键, 另外,如果 HKUser 表中没有添加关注者,它会完美运行,一旦更新它就会崩溃
import UIKit
import RealmSwift
class HKUser: Object{
dynamic var full_name = ""
dynamic var email: String?
dynamic var user_id: String?
let followers = List<HKUser>()
override static func primaryKey() -> String? {
return "user_id"
}
}
我也想更新数据库中用户的连接,所以我想做一些类似的事情
//1. updated the userFollower array with required data
let userFollowers:[HKUser] = []
//2. now need to link it with my user object and update it in db
if let user = realmWrapper.sharedInstance.getUser(forID: id) {
try! realm.write {
//want some method like which do update the existing followers,
//and if not exists do add it to db and link them to user something like
//realm.add(user, update: true)
user.followers.append(contentsOf: followers)
/**********
GETS CRASH OVER HERE,
due to duplicate primary key,
it works perfect if no followers has been added in HKUser Table,
once it comes to update it crashes
**********/
}
}
【问题讨论】:
-
第一件事,也许不相关:为什么它是你的主键定义为可选?你不能有一个空主键,对吧?
-
是的,但这不是问题,我已经通过更新到非可选字符串来检查
-
我不太确定你想要实现什么。但是你在哪里设置主键?我可以看到 get 函数,但不是 set。您的错误是因为您尝试使用现有主键设置添加领域对象。