我看过 Realm.io 文档。我正在开发一个应用程序来跟踪我的车辆费用。我已经将我认为可能对 Realm 中的数据模型有用的东西放在一起,但我是新手,不确定这是否可行,或者是否有更好的方法来做到这一点。这是我所拥有的,我还没有把它放在一个项目中并尝试编译。 realm.io 文档对我来说有点模糊,所以也许有人可以告诉我你的想法。我在我不确定如何实现目标的地方添加了一些评论...
// Vehicle model
class Vehicle : RLMObject {
dynamic var name = “”
dynamic var number = “”
dynamic var currentMiles = 0
dynamic var entries = RLMArray(objectClassName: Entry.className())
}
// Entry model
class Entry: RLMObject {
dynamic var vehicle: Vehicle //??
dynamic var date = NSDate()
dynamic var expense = 0.0
dynamic var mileage : Vehicle.currentMiles // want to update the Vehicle mileage with each entry
}
// Gas model
class Gas: Entry {
dynamic var gallons = 0
dynamic var pricePerGallon = 0.0
}
// OilChange model
class OilChange : Entry {
dynamic var milesBetweenChanges = 0
}
// Other Service model
class OtherService: Entry {
dynamic var notes = “”
}
最佳答案
您走在正确的轨道上!我认为,唯一需要改进的模型是 Entry
。首先,这是带有我的注释的模型:
// Entry model
class Entry: RLMObject {
dynamic var vehicle: Vehicle // This is valid Swift, but you'll need to set the value in the designated initializer (`init()`).
dynamic var date = NSDate()
dynamic var expense = 0.0
dynamic var mileage : Vehicle.currentMiles // This isn't valid Swift, since `Vehicle` is a class, and doesn't have a `currentMiles` member
}
你想要的是这样的:
// Entry model
class Entry: RLMObject {
dynamic var vehicle = Vehicle() // Use a default value so that `init()` succeeds, but you can still use `init(vehicle: Vehicle)` in your code
dynamic var date = NSDate()
dynamic var expense = 0.0
dynamic var mileage = 0
init() {
// Must override init() when adding a convenience initializer
super.init()
}
convenience init(vehicle: Vehicle) {
super.init()
self.vehicle = vehicle
mileage = vehicle.currentMiles
}
}
不幸的是,您发现 Realm 的文档含糊不清。如果您有什么特别希望我们澄清的,请告诉我们。我们是一群非常平易近人的人!
关于ios - 尝试创建 Swift Realm 数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27596460/