我有一个SQLite数据库,我用它来存储应用程序数据,我可以查看它内部以调试我遇到的问题-但是iPhone模拟器通常在哪里存储它的数据?


当前回答

在Xcode 5中,你可以使用以下代码:

#import <Foundation/NSFileManager.h>

and:

NSString *homeDir = NSHomeDirectory();
NSLog(@"%@",homeDir);

结果看起来像这样:

"/Users/<your user name>/Library/Application Support/iPhone Simulator/7.1/Applications/hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh"

hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh是一个十六进制字符串,用来识别你的iOS应用程序。

其他回答

在Xcode 5中,你可以使用以下代码:

#import <Foundation/NSFileManager.h>

and:

NSString *homeDir = NSHomeDirectory();
NSLog(@"%@",homeDir);

结果看起来像这样:

"/Users/<your user name>/Library/Application Support/iPhone Simulator/7.1/Applications/hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh"

hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh是一个十六进制字符串,用来识别你的iOS应用程序。

对于macOS Catalina,我发现我的db在:

~/Library/Developer/CoreSimulator/Devices/{deviceId}/data/Containers/Data/Application/{applicationId}/Documents/my.db

为了获得applicationId,我只是按修改的日期对文件夹进行了排序,不过我相信有更好的方法。

简单地这样做:

NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
NSLog(@"%@", docDirPath);

你会得到这样的想法:

/用户/ admin /图书馆/开发/ CoreSimulator /设备/ 58 b5b431-d2bb-46f1-aff3-dfc789d189e8 /数据/集装箱/数据/应用程序/ 6 f3b985f - 351 - e - 468 - f - 9 - cfd bcbe217a25fb /文档

去那里,你会看到应用的文档文件夹,不管XCode的版本是什么。(在Finder中使用“Go to Folder…”命令并指定路径“~/library”)。

字符串路径的Swift版本:

let docDirPath =
NSSearchPathForDirectoriesInDomains(.documentDirectory,
                                    .userDomainMask, true).first
print(docDirPath)

和文件夹URL:

let docDirUrl =
    FileManager.default.urls(for: .documentDirectory,
                             in: .userDomainMask).first
print(docDirUrl)

对于不经常使用Xcode的react原生用户,你可以使用find。打开终端,通过数据库名称进行搜索。

$ find ~/Library/Developer -name 'myname.db'

如果你不知道确切的名称,你可以使用通配符:

$ find ~/库/开发人员名'myname.*'

最简单的方法。

在某处捕捉断点。(或暂停程序执行(在调试区点击暂停)如Najdan tomic在评论中提到的) 在控制台窗口中输入po NSHomeDirectory()

结果:

(lldb) po NSHomeDirectory() \用户usernam / Library /开发商CoreSimulator / / 4734F8C7-B90F-4566-8E89-5060505E387F Containers /数据带给您应用程序/ 395818BB-6D0F-499F-AAFE-068A783D9753