iOS 10中的sqlite3_prepare_v2 exc_bad_access

时间:2016-10-07 11:27:34

标签: ios xcode sqlite ios10

我在iOS项目中使用sqlite作为数据库。在iOS 9中,所有东西都运行得很好。现在我更新了新的Xcode。但是应用程序在sqlite3_prepare_v2'上多次崩溃。

另外,我没有关闭数据库加班。并且只打开一次。 我在下面的代码b中添加了DB open,在调试中我发现了DB关闭。但仍然崩溃了。

crash

任何人都可以帮助我吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

我认为问题在第2592行。

将密钥传递给sqlite3_key(...)时不要将密钥视为字符串 不确定如何生成密钥但是如果设置了第一个字节' \ 0'然后strlen返回0 (如果你使用一些基于NSData随机字节的自动生成助手,可能会经常发生这种情况)

sqlite3_key定义:

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

它期望nKey字节在" \ 0"也是允许的

而是尝试:

 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...