Я пытаюсь обновить объект области с помощью первичного ключа. Имейте в виду, я не обновляю первичный ключ, а только другое поле. Ниже мой мой объект:
class UserData : Object {
@objc dynamic var name: String? = nil
@objc dynamic var bio: String? = nil
@objc dynamic var username: String? = nil
@objc dynamic var phone: String? = nil
@objc dynamic var uid : String? = nil
@objc dynamic var imageL: Data? = nil
override static func primaryKey() -> String {
return "uid"
}
}
extension UserData {
func writeToRealm(){
try? RealmService.uirealm.realm.write {
RealmService.uirealm.realm.add(self, update: true)
}
}
func DeleteFromRealm(object: Results<UserData>){
try? RealmService.uirealm.realm.write {
RealmService.uirealm.realm.delete(object)
}
}
}
Вот как я создаю сервис Сервиса в своей программе:
class RealmService {
static let uirealm = RealmService()
private var _initRS = try! Realm()
var realm: Realm! {
return _initRS
}
}
Я пытаюсь обновить свойство "bio" объекта, но мне постоянно дают
исключение для "невозможно обновить первичный ключ"
Теперь я действительно не понимаю, почему мне выдают эту ошибку, хотя
Я не обновляю первичный ключ в объекте.
Дополнительные примечания:
Я обновляю объект области при каждом наблюдаемом изменении экземпляра Firebase. Так что это та область, где у меня возникла проблема. Потому что каждый раз, когда происходит изменение, будет только один экземпляр области записи.
Код для того же:
FBDataservice.ds.REF_USERS.child(uuid).observe(.value, with: { (snapshot) in
if snapshot.hasChild("credentials") {
if let snap = snapshot.value as? Dictionary<String, Any> {
if let cred = snap["credentials"] as? Dictionary<String, Any> {
let u = User(userid: uuid, userData: cred)
self.usercache.uid = uuid
self.usercache.bio = u.aboutme
self.usercache.writeToRealm()
}
}
}
// RealmService.uirealm.realm.refresh() ------> No sure about this
})
}