【问题标题】:Realm object as member is nil after saving保存后作为成员的领域对象为零
【发布时间】:2015-12-22 17:00:25
【问题描述】:

我面临一个问题,即 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的引用始终为nil。

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

【问题讨论】:

  • 您如何检测到该对象为零?监视窗口总是显示 nil 例如成员,无论这是否属实。我会说这与领域对象的惰性有关
  • @ClaudioRedi 当我从数据库中获取对象时,Medicine 对象没有被保存,但MedPack 被保存。
  • 原谅我的无知, Medicine 子类的 MBObject 是什么?
  • @caseynolan 对不起,这也应该只是Object

标签: ios database swift realm


【解决方案1】:

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

相反,您可能需要稍微重构您的代码,但请确保在写入事务中明确地将您的 Medicine 对象添加到 Realm,然后再将其设置为与 MedPack 的关系,然后将 MedPack 写入数据库.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多