看完this教程 我需要一些帮助来了解执行以下操作的最有效方法。
当我的应用程序打开时,它需要加载一个 Profile
对象。由于在应用程序的生命周期中应该只有其中一个,所以我将其设置为单例。
Realm 似乎是保存和检索数据的好方法。进一步查看后,我似乎需要一个数据模型才能使用 Realms。在尝试将 Object
集成到如下所示的 Profile.swift 中失败后,我需要一些帮助来解决我应该如何处理这个问题。我应该制作第二个类 ProfileDataModel
可以被 Profile
调用以检索和保存更改,还是有办法包含一个 Realm Object
进入单例类?
简介.swift
class Profile {
//MARK: Singleton
static let sharedInstance = Profile()
//MARK: Properties
var characterName: String
var level: Int
//MARK: Init
private init() {
//TODO: Load from realms
self.characterName = "John Appleseed"
self.level = 50
}
//MARK: Helper Methods
static func save(){
//TODO: Save to Realm
}
}
最佳答案
我建议您创建一个数据库管理器类来处理对它的所有数据库操作,然后您可以单独创建您的数据模型并使用您的管理器类在您的数据库上获取/存储数据。
class DBManager {
//MARK: Singleton
static let sharedInstance = DBManager()
//MARK: Init
private override init(){
let config = Realm.Configuration(
fileURL: dbPath,
readOnly: false)
do{
myDB = try Realm(configuration: config)
print(dbPath)
}
catch{
print("boooom")
}
}
//retrive data from db
func getDataFromDB() -> Results<DataModel>{
let results: Results<NewsModel> = myDB.objects(DataModel)
return results
}
//write an object in db
func addDataModelEntry(object: DataModel){
try! myDB.write{
myDB.add(object, update: true)
}
}
}
//your controller you want to use your db manager class
class main(){
func viewDidLoad(){
DBManager.sharedInstance.getDataFromDB() ///here you have realm results
DBManager.sharedInstance.addDataModelEntry(customDataModel) //to store your object on db
}
}
我放了一些示例只是为了展示操作方式,您可以使用这些函数扩展到任何类型的数据库操作以满足您的特定需求。
关于iOS (Swift) 单例 Realm 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38166276/