我正在使用sqlite查询从USDA数据库获取特定食品的营养价值。 在模拟器中尝试时查询工作正常,但有时会导致设备崩溃。 我在应用程序本身中包含了USDA数据库。执行查询的表还包含超过5个lac记录。我在申请发布时获得“1级内存警告”。我无法使用webservices,因为要求提供离线支持。
有任何建议如何处理这种情况??
编辑:
在日志中我收到Signal 0消息
编程接收信号:“0”。 数据格式化程序暂时不可用,将在“继续”后重试。 (加载共享库时出现未知错误“/Developer/usr/lib/libXcodeDebuggerSupport.dylib”)
答案 0 :(得分:2)
我猜数据库的大小导致崩溃...... 如果您将此数据库用作只读,则可以使用压缩和加密的表单...您可以从此处获取更多详细信息http://www.hwaci.com/sw/sqlite/cerod.html 这可能会帮助你摆脱内存警告.. 这是另一个可以帮助您减少数据库大小的链接.... How to reduce the size of an sqlite3 database for iphone?
答案 1 :(得分:2)
你正在耗尽你的应用程序的内存。我不是数据库专家,但您必须使用一些特殊技术来访问您庞大的数据库。也许在DB的不同部分中串行执行多个查询。或者将DB划分为多个段。以下是与您看到的崩溃有关的一些参考 -
Program received signal: “0”. Data Formatters temporarily unavailable
Data Formatters temporarily unavailable
Data Formatters temporarily unavailable, will re-try after a 'continue'
如果您搜索错误消息,还有更多内容。
答案 2 :(得分:2)
内存相关崩溃在ios应用程序中非常常见我注意到更稳定的应用程序倾向于手动管理内存,而不仅仅是让设备管理它。我想如果你将它分成几个部分而不是读取一个文件,就像akshay说索引表更稳定。您可以尝试从压缩拉链中读取文件,这比普通的旧读取更有效。