作为成员的领域对象在保存后为零

时间:2015-12-22 17:00:26

标签: ios database swift realm

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

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"
    }
}

添加后,对象Medicine的引用总是为零。

class Medicine: Object {

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

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

创建对象

let medPack = MedPack(medicine: med)

添加到数据库

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

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

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

1 个答案:

答案 0 :(得分:3)

将此代码与其中一个Realm示例项目进行比较后,看起来简单地将Object设置为另一个的子项并不会将其隐式写入数据库。

相反,您可能需要稍微重构代码,但在将其设置为Medicine然后编写{{{}}}之前,请确保在写入事务中将MedPack对象显式添加到Realm中。 1}}到数据库。