打开 Realm 文件
在此页面上
Overview
如果您有通过运行客户端应用程序创建的本地 Realm 文件,则可以在 Realm Studio 中打开该文件。
如果您还没有 Realm 文件,可以通过导入 CSV 创建一个 Realm 文件,或者也可以下载一个演示文件。
打开本地 Realm 文件
您可以使用 Realm Studio 打开并浏览本地 Realm 文件。这可以是通过在本地计算机上运行模拟器生成的文件,也可以是来自其他来源的文件。某些开发工具甚至允许您在模拟器运行过程中查看和编辑 Realm 文件。此工作流支持对对象和模式的更改进行快速、简单的迭代。
查找 Realm 文件
Realm 将每个对象和类型的二进制编码版本存储在单个 Realm 文件中。该文件位于您在打开 Realm 时定义的特定路径。
要找到您的默认 Realm 文件路径,请执行以下操作:
// Get on-disk location of the default Realm let realm = try! Realm() print("Realm is located at:", realm.configuration.fileURL!)
// Open a realm. const realm = await Realm.open({ schema: [Car], }); // Get on-disk location of the Realm const realmFileLocation = realm.path; console.log(`Realm file is located at: ${realm.path}`);
运行Realm Studio的机器无法直接访问 Android 模拟器使用的文件系统。 您必须先从模拟器下载该文件,然后才能访问权限。
首先,在模拟器上找到该文件的路径:
// Run this on the device to find the path on the emulator Realm realm = Realm.getDefaultInstance(); Log.i("Realm", realm.getPath());
然后,使用 ADB下载文件。 您可以在应用运行时执行此操作。
> adb pull <path>
您还可以使用 ADB 再次上传修改后的文件,但前提是应用未运行。 在应用运行时上传修改后的文件可能会损坏该文件。
> adb push <file> <path>
var realm = Realm.GetInstance(); Console.WriteLine($"Realm is located at: {realm.Config.DatabasePath}");
// Get on-disk location of the default Realm final storagePath = Configuration.defaultStoragePath; // See value in your application print(storagePath);
config = SyncConfiguration.Builder(user, setOf(Item::class)) .initialSubscriptions { realm -> add( realm.query<Item>( "owner_id == $0", realmApp.currentUser!!.identity ), "User's Items" ) } .build() // Log on-disk location of the realm file Log.v("My Tag", "Realm Path: ${config.path}")
当您知道本地 Realm 文件的位置后,您可以在 Open Realm file(打开 Realm 文件)对话框中浏览到该位置。
注意
隐藏路径中的文件
在 MacOS 上,Xcode 模拟器文件的默认位置位于 ~/Library
文件夹下。默认情况下,这是一个隐藏目录。您可能无法从 Open Realm
file(打开 Realm 文件)对话框中浏览到该位置。
请使用另一种技术来查看文件,例如 Finder 中的 Go to Folder
,然后从其中打开 Realm。
从 CSV 创建
如果您没有本地 Realm 文件,您可以在 Realm Studio 中从 CSV 创建一个 Realm 文件。
当您从 CSV 创建 Realm时,Realm Studio 会推断出以下详细信息:
CSV 的名称将成为 Realm 文件中的类名
CSV 的第一行将成为 Realm 中的类属性名称
每列的值决定类属性类型。包含“true”和“false”值的列将成为布尔属性类型。全部包含整数的列将成为整数属性类型,依此类推。如果 Realm Studio 无法确定属性类型,则它将成为字符串。
例如,一个名为 data.csv
的 CSV 具有以下格式:
1 device,number,flag 2 gizmo,1,TRUE 3 widget,2,FALSE
成为一个名为 data
的类模型,具有以下三个属性:
device
,类型为string
number
,类型为int
flag
,类型为bool
向 Realm 添加更多数据
从 CSV 创建新 Realm 文件时,您可能会收到以下消息:
“导入数据失败:模式中缺少类名 (name-of-file.csv)”
如果出现这种情况,请点击 OK(确定)。您将看到从 CSV 创建 Realm 的操作创建了类定义,但 Realm 中没有对象。这时,您可以执行从 CSV 导入,以使用映射到您刚才创建的类定义的对象来填充 Realm。
下载示例
如果您刚接触 Realm 并且没有要导入的 Realm 文件或 CSV,您仍然可以尝试使用 Realm Studio。
当您打开 Realm Studio 时,您将看到一个Download a demo Realm file的选项。
当您单击 Realm Studio 中的链接下载演示文件时,您可以指定名称和位置以便保存包含演示数据的 Realm 文件。下载文件后,您可以使用 Open Realm file(打开 Realm 文件)对话框将其打开。
打开 Realm 文件时出错
如果您在尝试打开 Realm 文件时遇到错误,这可能是由于 Realm Studio 支持的 Realm 文件格式与 SDK 生成的 Realm 文件格式之间的版本不匹配。
要验证兼容性,请查看您的 SDK 版本或 Realm Studio版本 的发布说明 。您可能需要升级或降级Realm Studio或Realm 软件开发工具包(Realm SDK)版本。
这些错误消息可能类似于以下内容:
Realm file is currently open in another process which cannot share access with this process. All processes sharing a single file must be the same architecture.
The file is already opened by another process, with an incompatible lock file format. Try up- or downgrading Realm Studio or SDK to match their versions of Realm Core.