Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 保存后,作为成员的领域对象为零_Ios_Database_Swift_Realm - Fatal编程技术网

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

Ios 保存后,作为成员的领域对象为零,ios,database,swift,realm,Ios,Database,Swift,Realm,我面临一个问题,一个领域对象有另一个领域对象作为成员,它在添加到数据库后总是nil class MedPack: Object { dynamic var uuid = NSUUID().UUIDString dynamic var medicine: Medicine? convenience init(medicine: Medicine) { self.init() self.medicine = medicine }

我面临一个问题,一个领域对象有另一个领域对象作为成员,它在添加到数据库后总是
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)
    }
}

将此代码与某个领域示例项目进行比较后,似乎简单地将
对象设置为另一个对象的子对象也不会隐式地将其写入数据库


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

您如何检测到该对象为零?“监视”窗口始终显示实例成员的nil,无论这是否为真。我认为这与王国的懒惰本性有关objects@ClaudioRedi当我从数据库中获取对象时,
Medicine
对象不会被保存,但是
MedPack
被保存。请原谅我的无知,Medicine子类的MBObject是什么?@caseynolan抱歉,这也应该是
对象
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"
    }
}