gpt4 book ai didi

ios - 追加 RLMArray 时出现问题,更新 RLMObject 中的 RLMArray 并将其与 swift Realm 3.0 中的对象链接

转载 作者:搜寻专家 更新时间:2023-11-01 07:17:12 25 4
gpt4 key购买 nike

想要一些方法来更新现有的关注者,如果不存在,请将其添加到数据库并将它们链接到用户,例如

GETS CRASH OVER append in write block,由于主键重复,此外,如果没有在 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
**********/
}
}

最佳答案

List<T>.append()如果对象是非托管的,则方法隐式保存到 Realm。这就是为什么会出现重复主键异常的原因。

为避免这种情况,您可以在附加到列表之前添加或更新非托管对象。然后将对象附加到列表中。

try! realm.write {
...
realm.add(followers, update: true) // Add or update the objects first
user.followers.append(contentsOf: followers)
...
}

关于ios - 追加 RLMArray 时出现问题,更新 RLMObject 中的 RLMArray 并将其与 swift Realm 3.0 中的对象链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41526089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com