我在最新的iOS项目中使用FMDB与SQLite一起工作(支持iOS SDK 7.0及以上版本)。在开发过程中,一切都像是一种魅力。我喜欢这个包装纸。我已在模拟器和测试仪上进行了测试直接构建到设备(我的设备是iPhone 5C和iPad mini 2),没有问题发生。
但是,当我通过TestFlight向我的测试人员分发Ad-hoc构建(使用我的开发人员证书和配置)时,事情就会失败。他们可以下载&成功安装我的应用程序但是当它启动时,内存不足'错误抛出屏幕。
我已经检查了其他一些SO问题&确保每个FMResultSet *
使用后关闭。但是当我使用iTools来探索应用程序的目录结构时,令人惊讶的是没有创建数据库文件,这意味着FMDB无法打开SQLite数据库文件并抛弃误导性的“内存不足”#39 ;错误。所以我尝试创建数据库文件:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *appBundleName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
NSString *dbPath = [paths[0] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.sqlite", appBundleName]];
_database = [FMDatabase databaseWithPath:dbPath];
< - 在app的文档文件夹中创建foo-bar.sqlite
NSString *appBundleName = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
_database = [FMDatabase databaseWithPath:[NSString stringWithFormat:@"/tmp/%@.sqlite", appBundleName]];
< - 在tmp
文件夹
_database = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]];
< - FMDB tutorial显示的是什么
但没有运气。仍未创建.sqlite
/ .db
文件。
之前有人遇到过这个问题,或者有什么建议可以帮我摆脱困境吗?
先谢谢。
答案 0 :(得分:3)
我相信你也在github repo上提到了这一点 - 但基本答案是:使用FMDatabaseQueue。