我在我的iPhone应用程序中使用SQLITE数据库。我的主屏幕上有一个刷新按钮,点击该刷新按钮我通常从我的Web服务获取数据并将其存储到我的数据库中。在正常情况下它工作正常,但当我点击我的刷新按钮4-5次我的应用程序崩溃和我的应用程序日志显示“无法打开数据库”我不知道为什么我收到此SQLLITE错误。在SQLITE数据库中插入行数有什么限制吗?
答案 0 :(得分:2)
听起来您的应用程序正在从Web服务下载数据,将其写入数据库,然后在经常按下按钮时重复这些步骤。
根据您的应用程序的架构方式,您可能会尝试从不同的线程多次写入数据库 - 这是sqlite库禁止的。
如果没有看到某些代码,就无法确定发生了什么。
理想情况下,您应该设置队列以写入数据库,而在Cocoa / Cocoa Touch中,使用NSOperation
和NSOperationQueue
可以轻松实现这一点。使用这些类,您可以封装下载数据的行为,将其解析为模型对象,并将其写入数据库中的不同“操作”,然后可以放在队列中。您还可以设置依赖项,以便在另一个操作尚未完成时不会运行一个操作。所有这些都是可配置的。
请记住,虽然使用NSOperation进入了多线程的世界,如果你在任何时候更新用户界面,你需要在主线程上进行,因为UIKit不是线程安全的。