繁体   English   中英

快速将非领域对象作为忽略属性添加到领域对象?

[英]Add a non realm object as ignored property to realm object in swift?

我试图将非领域类对象添加到这样的领域对象。

class TrainTripItinerary: Object {
    dynamic var  departStationName: String?
    dynamic var  departStationCode: String?
    var runningStatus: TrainRunningStatus?

    override static func ignoredProperties() -> [String] {
        return ["runningStatus"]
    }

}

虽然TrainRunningStatus不是领域类。

class TrainRunningStatus {
    var trainDataFound: String?
    var startDate: String?
    var startDayDiff: String?
}

我现在无法更新runningstatus属性。 有人知道它是如何工作的吗? 我分别获取runnningstatus并将其分配给领域对象,但即使分配后它也保持为零。

例如。

let runningStatus = TrainRunningStatus()
trainTripItinerary.runningStatus = runningStatus

该行不起作用,trainTripItinerary runningStatus属性未正确设置为始终为零。

如注释中所建议,请确保使用相同的TrainTripItinerary实例,因为被忽略的属性不会在不同实例之间自动更新其值。

请参阅下面的示例代码,演示被忽略的属性如何工作

let realm = try! Realm()

try! realm.write {
    realm.deleteAll()
}

let runningStatus = TrainRunningStatus()

var trainTripItinerary = TrainTripItinerary()
trainTripItinerary.runningStatus = runningStatus

assert(trainTripItinerary.runningStatus != nil)

try! realm.write {
    realm.add(trainTripItinerary);
}

assert(trainTripItinerary.runningStatus != nil)

trainTripItinerary = realm.objects(TrainTripItinerary.self).first!

assert(trainTripItinerary.runningStatus == nil)

首先,您的代码不正确。

class TrainTripItinerary: Object {
    dynamic var  departStationName: String?
    dynamic var  departStationCode: String?
    var runningStatus: TrainRunningStatus?

    override static func ignoredProperties() -> [String] {
        return ["runningStatus"]
    }
}

func ignoredProperties() -> [String]仅在Realm属性上使用。 由于您的属性为var runningStatus: TrainRunningStatus? 不以dynamic开头,它不是Realm属性。 您无需在此处使用func ignoredProperties() -> [String]

var runningStatus: TrainRunningStatus? 在Realm中,这称为“瞬态属性”。 通常,过渡属性是根据当前日期或Realm属性计算得出的,Realm不会对过渡属性做任何事情,您应该自己维护它们。

因此,如果只想将runningStatus用作瞬态属性,则只需删除override static func ignoredProperties() -> [String]的代码即可, override static func ignoredProperties() -> [String]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM