ios - 尝试创建 Swift Realm 数据模型

标签 ios swift realm

我看过 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/

相关文章:

ios - 如何在 ios 的 swift 语言中为具有其他类型输入的变量设置 setter?

ios - 如何在swift中设置UIlabel背景颜色的高度

ios - Swift 3 AddConstraintWithFormat 的语法?

Android Realm.io 迁移 : Fallback to . deleteRealmIfMigrationNeeded()

ios - 在 Evernote SDK 上访问标签

ios - 在给定坐标附近,在 Swift、MapKit 和 corelocation 中打印 hello

ios - 显示具有 2 列大小相等的方形单元格的 UICollectionView

swift - Swift 中的结构数组

android - 在 Realm 中更新语句

ios - Realm :在对象的新插入/更新时得到通知