如何在 iOS 项目中正确配置 Realm DB 文件 (<db_name>.realm) 的路径?

Posted

技术标签:

【中文标题】如何在 iOS 项目中正确配置 Realm DB 文件 (<db_name>.realm) 的路径?【英文标题】:How to correctly configure path for the Realm DB-file (<db_name>.realm) in iOS project? 【发布时间】:2016-03-09 05:54:01 【问题描述】:

对不起我的英语。

我开发了一个需要自己的本地数据存储的移动应用程序。我选择 Realm 作为数据库管理系统。在研究 Realm 文档的过程中,我对数据库设计、规范化、CRUD 操作以及与代码直接相关的所有内容都没有任何问题。

我很困惑。我在模拟器中测试我的应用程序。我没有创建本地数据库。我刚刚按照 Realm 文档中的说明进行了操作。 Realm 自己创建了它的数据库,我没有指定任何设置。我的数据库文件的位置如下: /Users/macbookpro/Library/Developer/CoreSimulator/Devices//EFECD945-285C-494F-8C1B-950D9AA05147/data/Containers/Data/Application/8D71FF0A-60D2-4875-96BB-36955E80D505/Documents/default.realm。

我很不方便每次都应用这条路径来分析数据库中的记录。存储在此路径的文件对于 Realm Browser 是不可访问的,因为我需要 root 权限。我看到人们将他们的 .realm 文件存储在项目目录中。请回答我 - 我该怎么做?这会是正确的选择吗?

我多次看到代码,其中出现了数据库文件的路径。例如,这里:https://github.com/pietbrauer/CarthageRealmUploadFailureExample/blob/master/Carthage.checkout/realm-cocoa/examples/ios/swift/Migration/AppDelegate.swift 我不确定这是否是正确的方向。

因此,我想:

1) 手头有一个数据库文件并能够快速引用它;

2) 了解算法 - 如何设置自己的 Realm 数据库路径 文件;

3) 知道真实设备上必须有哪些领域配置,以便 确保安全性和数据完整性。

非常感谢大家!

【问题讨论】:

【参考方案1】:

当你在你的应用中没有为默认的 Realm 指定路径时,Realm 会自动在你的应用的 Documents 目录中创建一个名为 default.realm 的路径。在 iOS Simulator 中运行的应用程序上,这会将 Realm 文件保存在适当的 Simulator 文件夹中,但您是正确的,因为它不是很直观。

回答您的问题:

    有一个很酷的实用程序叫做SimPholders,它可以让你在 iOS 模拟器中检查应用程序的 Documents 文件夹。这是获取模拟器生成的任何 Realm 文件的最佳方式。

    创建Realm 对象的实例时,您可以提供Configuration 对象来自定义它。您可以通过设置Configuration 对象的path 属性来显式设置Realm 文件的文件路径。

    iOS 在磁盘上提供了一个自动文件加密层,当设备被锁定时无法读取文件。如果您想要额外的安全性,那么可以设置 Realm Configuration 对象的 encryptionKey 属性,让 Realm 自己加密磁盘上的 Realm 文件。

希望对您有所帮助!如果您需要更多说明,请告诉我!

【讨论】:

蒂姆,非常感谢!我的遗漏是我在结束之前没有阅读文档。但是我还是建议将 部分(默认领域,领域配置,...)放在模型之前的开头。这是初始设置 - 一劳永逸,这是一个相当重要的点。因为它更符合逻辑。在我的情况下,我必须在应用程序中快速实现一个本地商店。而且我根本没有到达编写它的部分。新人不可能知道其标题 - 部分的内容。其余的 - 一切都很棒!【参考方案2】:

1) 和 2) 对安全性和数据完整性的影响非常小 3)如果您担心数据的安全性,请使用领域级加密,例如here

【讨论】:

以上是关于如何在 iOS 项目中正确配置 Realm DB 文件 (<db_name>.realm) 的路径?的主要内容,如果未能解决你的问题,请参考以下文章

在 IOS(Objective-C)中有效地解析 JSON 到 Realm DB

共享项目中的 Xamarin Realm,错误“Fody 未正确安装”

如何使用 Objective C 查询 Realm DB 中的嵌套对象

如何使用Objective C在Realm DB中存储数组值(RLMArray)?

在 SwiftUI 列表中呈现来自 Realm 的数据的正确方法是啥

在 SwiftUI 列表中呈现来自 Realm 的数据的正确方法是啥