iOS(Swift)Singleton Realm对象
发布时间:2020-12-14 17:14:48 所属栏目:百科 来源:网络整理
导读:阅读 this教程后,我需要一些帮助来了解最有效的方法. 当我的应用程序打开时,它需要加载一个Profile对象.由于在应用程序的生命周期中应该只有其中一个,我将其设置为单例. Realm似乎是保存和检索数据的好方法.进一步查看后,似乎我需要有一个数据模型才能使用Re
阅读
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 } } 我只是为了说明做的方式而放置了一些示例,您可以使用这些函数扩展到任何类型的数据库操作以满足您的特定需求. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |