阅读
this教程后,我需要一些帮助来了解最有效的方法.
当我的应用程序打开时,它需要加载一个Profile对象.由于在应用程序的生命周期中应该只有其中一个,我将其设置为单例.
Realm似乎是保存和检索数据的好方法.进一步查看后,似乎我需要有一个数据模型才能使用Realms.在将Object集成到下面显示的Profile.swift失败后,我需要一些帮助来解决这个问题.我应该创建第二个类ProfileDataModel,可以被Profile调用以检索和保存更改,还是有办法将Realm对象包含到Singleton类中?
Profile.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 } }
解决方法
我建议您创建一个db manager类来处理它上面的所有数据库操作,然后您可以单独创建数据模型并使用您的manager类来获取/存储数据库上的数据.
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 } }