作为成员的Realm对象保存后为nil [英] Realm object as member is nil after saving

查看:328
本文介绍了作为成员的Realm对象保存后为nil的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到一个问题,一个Realm对象有另一个Realm对象作为成员,添加到数据库后总是 nil



class MedPack:Object {

dynamic var uuid = NSUUID()。UUIDString
dynamic var medicine:Medicine?

方便init(医学:医学){
self.init()
self.medicine = medicine
}

override static func primaryKey() - >串? {
returnuuid
}
}



  class Medicine: Object {

var uuid = NSUUID()。UUIDString
var name:String?

override static func primaryKey() - >串? {
returnuuid
}
}

对象

  let medPack = MedPack(medicine:med)

添加到数据库

  static let sharedInstance = DBHelper b var realmDb:Realm! 

private init(){
realmDb = try! Realm()
}

func store(object:Object){
try! self.realmDb.write {
self.realmDb.add(object)
}
}


解决方案

将此代码与其中一个Realm示例项目进行比较后,看起来只需设置 Object



相反,你可能需要重构你的代码,但确保你显式地添加你的 MedPack ,然后写对象写一个写事务中的Realm。 MedPack 到数据库。


I'm facing an issue where a Realm object has another Realm object as member which is always nil after adding to the database.

class MedPack: Object {

    dynamic var uuid = NSUUID().UUIDString
    dynamic var medicine: Medicine?

    convenience init(medicine: Medicine) {
        self.init()
        self.medicine = medicine
    }

    override static func primaryKey() -> String? {
        return "uuid"
    }
}

The reference to the object Medicine is always nil after adding.

class Medicine: Object {

    var uuid = NSUUID().UUIDString
    var name: String?

    override static func primaryKey() -> String? {
        return "uuid"
    }
}

Creation of object

let medPack = MedPack(medicine: med)

Adding to database

static let sharedInstance = DBHelper()
var realmDb: Realm!

private init() {
    realmDb = try! Realm()
}

func store(object: Object) {
    try! self.realmDb.write {
        self.realmDb.add(object)
    }
}

解决方案

After comparing this code to one of the Realm sample projects, it would appear that simply setting an Object as a child of another does not implicitly write it to the database as well.

Instead, you may need to refactor your code slightly, but make sure you explicitly add your Medicine object to Realm in a write transaction, before you set its relation to MedPack and then write MedPack to the database.

这篇关于作为成员的Realm对象保存后为nil的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆