我已将使用数据库浏览器创建的数据库导入到我的swift中。现在我的问题是获取此数据库的路径。我也在应用程序中有一个FMDB包装器。
当我点击资源文件时,显示Full Path
描述,我可以直接使用它作为路径,我查询数据库没有问题,但我不确定是否可以附带完整路径应用程序,因为它看起来像是专门通过这台计算机。我尝试使用NSBundle.mainBundle().pathForResource("MyDatabaseName", ofType: "sqlite")
,但返回nil
基本问题:如何获取资源文件/数据库文件的路径以便我可以使用它?
感谢您的帮助!超级绝望!
答案 0 :(得分:2)
问题是你正在使用Mac文件系统中的路径到sopurce版本,不要使用它,你需要设备文件系统(或模拟器文件系统)中的路径。
在设备上,它会看起来像一样:
/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 应用程序文件系统中有一个文件路径。
以下是如何找到它:
创建数据库路径的示例代码:
NSBundle *bundle = [NSBundle mainBundle];
NSString *bundlePath = [bundle bundlePath];
NSLog(@"bundlePath: %@", bundlePath);
NSString *dbPath = [bundlePath stringByAppendingPathComponent:@"<path in bundle>"];
NSLog(@"dbPath: %@", dbPath);
还有其他方法可以找到路径(例如知道它在哪里是先验的)以及在应用程序中获取路径的其他方法,但不知道您的确切配置应该适合您。