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

时间:2018-10-15 19:15:14

标签: ios sqlite core-data ios12

我无法找到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似乎最近更改了文件的位置。

3 个答案:

答案 0 :(得分:0)

我假设您正在引用 Core Data SQLite文件。

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

默认情况下,如果您的应用程序是基于核心数据基于文档的应用程序(使用UIManagedDocument)(这种情况很少见),我认为文档文件会进入Documents子文件夹应用程序的容器(沙盒)中。但是,如果您的应用程序是非常常见的非基于文档的核心数据应用程序,那么单个SQLite文件将进入应用程序容器的Application Support子文件夹 em>(沙盒)。

您问题中的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

答案 1 :(得分:0)

我终于找到了它。

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

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

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

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

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

对我来说,最终结果是: MacintoshHD⁩▸⁨Users⁩▸⁨userName▸⁨Library⁩▸⁨Developer⁩▸⁨CoreSimulator⁩▸⁨Devices⁩⁨217E2EB2-139F-4568-B1D0-A6B9EE701198⁩▸⁨data⁩▸⁨容器⁨▸⁨数据⁩ ▸⁨应用程序⁩▸⁨C69F7670-3589-4F17-BEB0-79E290206676⁩▸⁨库⁩▸⁨应用程序支持⁩▸AppName->核心数据版本名称。

答案 2 :(得分:0)

这个answer可以为您提供帮助吗?

  

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

     

如果答案是肯定的,请尝试SQLiteFlow,它可以在   App Store,并在其文档中显示:

     
    

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