iOS (Swift) 单例 Realm 对象

标签 ios xcode swift singleton realm

看完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/

相关文章:

ios - 共享我编辑的 UIImage 时 UIActivityViewController 崩溃,但适用于 UIImage(名为 :)

ios - 在 Swift 中创建灵活的 API 类

对表示为数组的对象的 Swift Codable 支持

ios - TableView View Controller 显示下一个 View

ios - 在内部应用程序上更新 iOS 配置文件

ios - 具有多个行为模型的 ViewController

swift - 使用 Alamofire 发布并解析响应 | swift 5

php - PHP服务器上的Apple推送通知问题

ios - 我可以使用滑动删除来使用 titleForDeleteConfirmationButtonForRowAtIndexPath 滑动来执行其他操作吗?

ios - 输入邮政编码开关查看 Controller (如果在 Parse 中找到)(Swift 和 XCode)