【问题标题】:How to set .realm file on realm如何在领域上设置 .realm 文件
【发布时间】:2018-05-22 04:25:26
【问题描述】:

我正在使用领域开发应用程序。然后我想通过应用程序上的一组 .realm 文件来初始化领域。它最初位于 /Users/*****/Library/Developer/CoreSimulator/Devices/~****~/Documents/default.realm/ 我希望 app 文件夹中的 default.realm 文件与 storyboard 和 ViewController.swift 以及其他文件对齐。 我该如何解决这个问题?

【问题讨论】:

    标签: swift realm


    【解决方案1】:

    你可以在 Realm 的 init 方法中传递一个 fileURL

    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)
    
    // Open the Realm with the configuration
    let realm = try! Realm(configuration: config)
    

    请参阅documentation 了解更多信息。还有更多你可以配置here的东西。

    重要提示:见上面代码中的注释:

    以只读模式打开文件,因为应用程序包不可写

    要将领域文件放在您的包中,您将无法对其进行写入,它将是只读的。如果您想在您的应用程序中发布一个预填充的数据库,您可以在您的捆绑包中执行此操作,但如果您希望它是可写的,您需要在首次启动时将其复制到应用程序的文档目录,然后使用中的版本那个目录。

    您在 xcode 中添加并包含在构建设置中的“复制包资源”中的资源/文件包含在您的包中。捆绑包不可写。要与您的应用程序一起发送需要可写的文件,需要将其移动到合适的文件夹中。通常是应用程序文档文件夹。

    【讨论】:

    • 您通常应该使用 .path 而不是 url 字符串。 defaultRealmPath.absoluteString 应该是 defaultRealmPath.path 但这不会导致您目前的问题。从我所看到的,如果您在尚未运行该应用程序的设备/模拟器上运行它应该可以工作。您是否记录了任何错误?抱歉,我无法从当前网络访问聊天
    • 抱歉,我一直在聊天。我尝试了解决方案,然后我没有错误。但我在preset.realm 上看不到任何数据。数据库是空白的。
    • 需要确保捆绑包中的数据库有记录,尝试专门加载那个(可能是只读的)以便您可以验证
    • 我该怎么做?
    • 答案是我上面的实际答案。将配置和路径传递给它
    猜你喜欢
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多