快速地,有一种方法可以从第二个Realm捆绑包中添加新数据,而不会覆盖当前Default Realm中的任何现有数据?

问题描述 投票:-1回答:1

在应用程序初始加载时,捆绑的领域(Realm1)被复制到documents文件夹。现在,将捆绑的领域设置为默认领域,我可以更新bool属性,以便表视图可以显示已标记和未标记的单元格。但是,我正在寻找一种将第二个领域(Realm2)与更高版本的更新捆绑在一起的方法,该更新会将新数据添加到现有的默认领域,但又不覆盖当前的默认领域。如果有帮助,我目前正在使用Swift 5和Xcode 11.1。

到目前为止,我唯一想到的就是添加代码块以将新条目添加到默认领域。首先,视图将检查以查看该领域的计数,如果计数与原始捆绑相同,则它将添加新数据,如果计数等于初始捆绑加上新条目,则它将添加新数据。不会再次添加新数据。我一直希望有一个更简单的解决方案,我认为它更干净。

理想情况下,最终结果将是一种更新现有默认领域的方法,而不会覆盖已经编辑的内容。尽管我对使用领域还不是很陌生,但是如果能为我指出正确的解决方案,将不胜感激。谢谢。

ios swift realm bundle overwrite
1个回答
0
投票

一旦在磁盘上创建了默认的Realm,如果您想从捆绑的文件中读取数据,这是代码

    let config = Realm.Configuration(
        // Get the URL to the bundled file
        fileURL: Bundle.main.url(forResource: "MyBundledData", withExtension: "realm"),
        // Open the file in read-only mode as application bundles are not writeable
        readOnly: true)
    let realm = try! Realm(configuration: config)

读取数据后,您可以切换回去

var config = Realm.Configuration()
config.fileURL = config.fileURL!.deletingLastPathComponent().appendingPathComponent("\(some_realm_name).realm")
Realm.Configuration.defaultConfiguration = config

只要不覆盖,请确保您的对象使用唯一的主键,并且在写入对象时,不会覆盖任何内容,因为对象将添加唯一的主键而不是覆盖。

class MyClass: Object {
    @objc dynamic var my_primary_id = NSUUID().uuidString
© www.soinside.com 2019 - 2024. All rights reserved.