ios swift 模型结构与领域数据库
ios swift models structure with realm database
我正在开发我的 iOs 应用程序并且我正在使用 Realm 数据库。由于我对 ios 开发(还有 swift 和 xcode)完全陌生,所以我对结构化数据有疑问(我已经阅读了一些通用的项目结构指南,但找不到答案).我的想法与Java结构有关
对于 Realm 数据库 (RealmSiwft),我创建了一个这样的模型:
@objcMembers class Patient: Object {
dynamic var patientId:Int = 0
dynamic var refNumber:String = ""
convenience init(id:Int, refNumber:String){
self.init()
self.patinetID = id
self.refNumber = refNumber
}
}
现在,它看起来就像 Java 中的 POJO class。但据我所知,这个模型结构是这样制作的,所以它可以使用 Realm。
所以问题是,如果我需要在我的项目中的其他地方使用 Patient 对象,这个 Realm-POJO-model 好用吗?我的意思是,即使我不需要对它进行数据库操作,我是否应该像普通模型一样使用它?或者我应该让这个 Realm 模型类似于 DAO class 来进行数据库操作,并在我想在不使用数据库的情况下与 Patient 一起玩时制作另一个模型 class 就像 Patient.swift (我希望不会,因为它是这么多代码重复)
如果我需要患者模型中不会存储在数据库中的变量怎么办?我可以在没有动态的情况下做到吗?初始化比什么?这让我大吃一惊,据我所知 swift 它看起来很丑陋而且没有结构,或者我还不能切换到它...
if I need somewhere else in my project to use Patient objects, is this
Realm-POJO-model good to use?
even when I dont need to make database operations on it?
您可以在不保存到数据库的情况下使用您的 Patient 对象,将它们移动到不同的控制器等等。
what if I need variables in that Patient Model that won't be stored
in database?
查看 ignoredProperties()
方法。
Can I make it without dynamic?
不,你不能因为 Realm 基于 Objective-C 对象,所以这是必要的类型。
What about init than?
您可以创建不同的构造函数方法,请查看 Initialization 文档。在 Realm 的情况下,您应该为注意的变量设置值(如果您不给它们默认 属性 值)
您的 class 应如下所示:
class Patient: Object {
// MARK: - Properties
@objc dynamic var patientId: Int = 0
@objc dynamic var refNumber: String = ""
// MARK: - Meta
// to set the model’s primary key
override class func primaryKey() -> String? {
return "patientId"
}
//Ignoring properties
override static func ignoredProperties() -> [String] {
return ["tmpID"]
}
//It's ok
convenience init(id:Int, refNumber:String){
self.init()
self.patientId = id
self.refNumber = refNumber
}
}
您可以在以下位置找到所有其他详细信息:realm docs
您还可以使用 swift 扩展名扩展您的基本代码:
extension Patient {
var info: String {
return "\(patientId) " + refNumber
}
func isAvailableRefNumber() -> Bool {
return refNumber.length > 6
}
}
我正在开发我的 iOs 应用程序并且我正在使用 Realm 数据库。由于我对 ios 开发(还有 swift 和 xcode)完全陌生,所以我对结构化数据有疑问(我已经阅读了一些通用的项目结构指南,但找不到答案).我的想法与Java结构有关
对于 Realm 数据库 (RealmSiwft),我创建了一个这样的模型:
@objcMembers class Patient: Object {
dynamic var patientId:Int = 0
dynamic var refNumber:String = ""
convenience init(id:Int, refNumber:String){
self.init()
self.patinetID = id
self.refNumber = refNumber
}
}
现在,它看起来就像 Java 中的 POJO class。但据我所知,这个模型结构是这样制作的,所以它可以使用 Realm。
所以问题是,如果我需要在我的项目中的其他地方使用 Patient 对象,这个 Realm-POJO-model 好用吗?我的意思是,即使我不需要对它进行数据库操作,我是否应该像普通模型一样使用它?或者我应该让这个 Realm 模型类似于 DAO class 来进行数据库操作,并在我想在不使用数据库的情况下与 Patient 一起玩时制作另一个模型 class 就像 Patient.swift (我希望不会,因为它是这么多代码重复)
如果我需要患者模型中不会存储在数据库中的变量怎么办?我可以在没有动态的情况下做到吗?初始化比什么?这让我大吃一惊,据我所知 swift 它看起来很丑陋而且没有结构,或者我还不能切换到它...
if I need somewhere else in my project to use Patient objects, is this Realm-POJO-model good to use? even when I dont need to make database operations on it?
您可以在不保存到数据库的情况下使用您的 Patient 对象,将它们移动到不同的控制器等等。
what if I need variables in that Patient Model that won't be stored in database?
查看 ignoredProperties()
方法。
Can I make it without dynamic?
不,你不能因为 Realm 基于 Objective-C 对象,所以这是必要的类型。
What about init than?
您可以创建不同的构造函数方法,请查看 Initialization 文档。在 Realm 的情况下,您应该为注意的变量设置值(如果您不给它们默认 属性 值)
您的 class 应如下所示:
class Patient: Object {
// MARK: - Properties
@objc dynamic var patientId: Int = 0
@objc dynamic var refNumber: String = ""
// MARK: - Meta
// to set the model’s primary key
override class func primaryKey() -> String? {
return "patientId"
}
//Ignoring properties
override static func ignoredProperties() -> [String] {
return ["tmpID"]
}
//It's ok
convenience init(id:Int, refNumber:String){
self.init()
self.patientId = id
self.refNumber = refNumber
}
}
您可以在以下位置找到所有其他详细信息:realm docs
您还可以使用 swift 扩展名扩展您的基本代码:
extension Patient {
var info: String {
return "\(patientId) " + refNumber
}
func isAvailableRefNumber() -> Bool {
return refNumber.length > 6
}
}