sqlite3_prepare_v2 exc_bad_access in iOS 10



我在我的iOS项目数据库使用sqlite。在iOS 9中,一切都运行得很完美。现在我已经更新了新的Xcode。但是应用程序在'sqlite3_prepare_v2'时崩溃了很多次。

另外,我没有超时关闭数据库。而且只打开一次。我在调试中添加了DB打开下面的代码b'acs,我得到了DB关闭。但还是崩溃了

事故

有人能帮我吗?

Thanks in advance

我想问题在第2592行。

传递给sqlite3_key(…)时不要将key作为字符串处理不确定如何生成密钥,但如果第一个字节设置为'',则strlen返回0(如果你使用一些基于NSData随机字节的自动生成的助手,这可能会经常发生)

sqlite3_key定义:

SQLITE_API int SQLITE_STDCALL sqlite3_key(sqlite3 *db, const void *pKey, int nKey)

它期望nKey字节,其中""也被允许

而不是尝试:

 NSData *passBytes = [g_sqlite_key dataUsingEncoding:NSUTF8StringEncoding];
 int status = sqlite3_key(contactDB, passBytes.bytes, passBytes.length);
 if (status != SQLITE_OK) {
      // handle error and return
 }
 // continue...

最新更新