ios - 在应用程序的资源包中快速获取导入数据库的路径

标签 ios iphone sqlite swift resourcebundle

我已经将我使用数据库浏览器创建的数据库导入到我的 swift 中。现在我的问题是获取这个数据库的路径。我在应用程序中也有一个 FMDB 包装器。

当我点击资源文件时,会显示Full Path 描述,我可以直接使用它作为路径,查询数据库没有问题,但我不确定完整路径是否可以随应用程序一起提供,因为它看起来像是专门通过这台计算机进行的。我尝试使用 NSBundle.mainBundle().pathForResource("MyDatabaseName", ofType: "sqlite") 但返回 nil

基本问题:如何获取我的资源文件/数据库文件的路径以便我可以使用它?

感谢您的帮助! super 绝望!

最佳答案

问题是你正在使用Mac文件系统中的路径到源版本,不要使用那个,你需要设备文件系统(或模拟器文件系统)中的路径。

在设备上它看起来这样:

/private/var/mobile/Containers/Bundle/Application/953D9CCB-40A2-4587-9A75-531DCE3A2DD3/AppName.app/MyDatabaseName.sqlite

在模拟器上它看起来这样的:

/Users/me/Library/Developer/CoreSimulator/Devices/56992263-5158-4AF5-B0CC-83E31982BB3E/data/Applications/560EEF55-2F15-4094-B20C-FF3B839AF7C2/AppName.app/MyDatabaseName.sqlite There is a path to the file in the app file system.

找到它的方法如下:

  1. 在 Xcode 中打开您的项目
  2. 在 Xcode 菜单中:窗口:项目
  3. 在左栏中选择您的项目
  4. 在派生数据的右端单击箭头
  5. Finder 将打开派生数据文件夹
  6. 双击您应用的文件夹
  7. 将目录树导航到 Build/Products/Debug-iphonesimulator
  8. 你会看到文件.app
  9. 这是应用程序包目录。
  10. 右键单击(control 单击)并选择“显示包内容”
  11. 在此文件夹或子目录中找到数据库文件。
  12. Bundle路径是从这个文件夹到db文件的路径。

创建数据库路径的示例代码:

NSBundle *bundle = [NSBundle mainBundle];
NSString *bundlePath = [bundle bundlePath];
NSLog(@"bundlePath: %@", bundlePath);
NSString *dbPath = [bundlePath stringByAppendingPathComponent:@"<path in bundle>"];
NSLog(@"dbPath: %@", dbPath);

还有其他方法可以找到路径(例如知道它的先验位置)和其他在应用程序中获取路径但不知道您的确切配置的方法应该适合您。

关于ios - 在应用程序的资源包中快速获取导入数据库的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31084732/

相关文章:

iphone - 为什么我在以下 Core Graphics 代码中收到 "invalid context"错误?

ios - 在 UIView 上模拟 "falling"对象

iphone - SBJson Execptions after parsing (__NSArrayM objectForKey :)

iphone - 如何限制 UIDatePicker View 中的日期?

ruby-on-rails-3 - Rails 不创建中间表? - Habtm 关系

来自关闭库的 IOS 启动画面/弹出显示

ios - 并非所有输入字段都放大

html - Iphone 文本位置问题

SQLite 选择两列作为一列与 Null

c++ - 如何使用 QSqlQueryModel 从 SQLite 数据库中删除一行?