![](/img/trans.png)
[英]iOS (Swift), Realm migration add a new property to store another realm object
[英]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.