iOS 12中sqlite文件的位置在哪里?

问题描述 投票:0回答:4

我无法找到 IOS 模拟器的 sqlite 文件。我需要该文件来检查数据库中的数据以进行调试。

以前我会使用:

NSLog(@"Documents Directory: %@", [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject]);

获取文件的位置,然后将其粘贴到 Finder 中。 现在它给了我:

file:///var/mobile/Containers/Data/Application/7DA7CB97-948B-41C6-BFA3-A50E6FF4C8B3/Documents/

Apple 最近似乎更改了文件的位置。

ios sqlite core-data ios12
4个回答
1
投票

iOS .sqlite 数据库文件位置

将 next 添加到方案 -> 运行 -> 参数 -> 启动时传递的参数

-com.apple.CoreData.Logging.stderr 1
-com.apple.CoreData.SQLDebug 1

之后您将能够找到文件的位置

例如:

CoreData: annotation: Connecting to sqlite database file at "/Users/User/Library/Developer/CoreSimulator/Devices/DBF9B9A0-ED0C-45E9-BEE0-CA24BE1834D3/data/Containers/Data/Application/7F285D7A-5B39-4D1C-BE48-36AC16F069CD/Library/Storage.sqlite"

您可以使用 DB Browser for SQLite

打开它

请注意,可能有多个 .sqlite 文件。按名字找到你的


0
投票

我假设您指的是 Core Data SQLite 文件。

我认为苹果最近没有对文件位置进行任何更改。

默认情况下,如果您的应用程序是基于核心数据基于文档的应用程序(使用

UIManagedDocument
)(这种情况很少见),我认为文档文件会进入应用程序的
Container
(沙箱)的Documents子文件夹中。但是,如果您的应用程序是 Core Data non-document-based 应用程序(这很常见),那么单个 SQLite 文件将进入您应用程序的
Container
(沙箱)的 Application Support 子文件夹中。

问题中的 NSLog() 调用仅查找

Documents
子文件夹。如果您的应用程序不是基于文档的,请将常量更改为
NSDocumentDirectory
NSApplicationSupportDirectory
。然后查看它打印的路径。

例如,在我的 Core Data 非基于文档的应用程序中,在 iOS 12 模拟器中运行,记录应用程序支持文件夹打印的路径:

/Users/jk/Library/Developer/CoreSimulator/Devices/BB85B11A-5C2C-4CBC-AB4F-891C74E6FD3A/data/Containers/Data/Application/A973B1C6-4E71-43DD-8F21-6A55903E071B/Library/Application Support

0
投票

我终于找到它在哪里了。

-用户->用户名->右键单击显示库文件夹

-运行控制台命令:xcrun simctl list

这将显示您正在使用的模拟器的 ID。

-导航到 /Users/jk/Library/Developer/CoreSimulator/Devices/ 并选择与您找到的 ID 匹配的模拟器文件。

-在查找器搜索中,搜索当前型号版本名称。

我的最终结果是: Macintosh HD ▸ 用户 ▸ 用户名 ▸ 库 ▸ 开发者 ▸ CoreSimulator ▸ 设备 ▸ 217E2EB2-139F-4568-B1D0-A6B9EE701198 ▸ 数据 ▸ 容器 ▸ 数据▸ 应用程序 ▸ C69F7670-3589-4F17-BEB0-79E290206676 ▸ 库 ▸ 应用程序支持 ▸ AppName -> Core Data 版本名称。


0
投票

这个答案能给你一些帮助吗?

我认为你真正需要的是一个可以处理文件的 SQLite 编辑器 路径会自动更改,因此您不必担心什么 路径实际上改变了,对吗?

如果答案是肯定的,那么尝试一下 SQLiteFlow,它可以在 App Store,从它的文档来看,它说:

处理数据库文件名或目录更改。这使得 SQLiteFlow 可以与 iOS 中的 SQLite 数据库友好地工作 模拟器。

© www.soinside.com 2019 - 2024. All rights reserved.