加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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
    }
}

我只是为了说明做的方式而放置了一些示例,您可以使用这些函数扩展到任何类型的数据库操作以满足您的特定需求.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读