带有FMDB的iOS SQLite不断报告“内存不足”。仅通过TestFlight分发adhoc构建时出错

时间:2014-07-15 01:46:04

标签: ios iphone sqlite fmdb

我在最新的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文件夹

中创建foo-bar.sqlite的内容
_database = [FMDatabase databaseWithPath:@"/tmp/tmp.db"]];

< - FMDB tutorial显示的是什么

但没有运气。仍未创建.sqlite / .db文件。

之前有人遇到过这个问题,或者有什么建议可以帮我摆脱困境吗?

先谢谢。

1 个答案:

答案 0 :(得分:3)

我相信你也在github repo上提到了这一点 - 但基本答案是:使用FMDatabaseQueue。