我正在开发我的iOs App并且我正在使用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类。但据我所知,这种模型结构是这样制作的,因此它可以使用Realm。
所以问题是,如果我需要在我的项目中的其他地方使用Patient对象,这个Realm-POJO模型是否适合使用?我的意思是,即使我不需要对它进行数据库操作,我是否应该像普通模型一样使用它?或者我应该使这个Realm模型类似DAO类用于数据库操作,并且只要我想在不使用数据库的情况下与Patient一起玩,就可以制作另一个类似Patient.swift的模型类(我希望不会,因为它的代码重复了很多)< / p>
如果我需要那个不会存储在数据库中的患者模型中的变量怎么办?我可以没有动态吗?初学者怎么样?这让我大吃一惊,据我所知,它看起来很丑陋而且非结构化,或者我只是无法切换到它......
答案 0 :(得分:1)
如果我需要在我的项目中的其他地方使用Patient对象,是这样的 Realm-POJO模型好用吗? 即使我不需要对它进行数据库操作?
您可以使用您的Patient对象而无需节省DB,将它们移动到不同的控制器等等。
如果我需要存储的患者模型中的变量怎么办? 在数据库?
查看ignoredProperties()
方法。
我可以没有动态吗?
不,你不能因为基于Objective-C对象的Realm,所以这是必要的类型。
init怎么样?
您可以创建不同的构造函数方法,查看Initialization doc。对于Realm,你应该为注意到的变量设置值(如果你不给它们默认属性值)
你的课应该是这样的:
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
}
}