在iOS 10中的sqlite3_prepare_v2 exc_bad_access

我在我的iOS项目中使用sqlite数据库。 在iOS 9中,所有的东西都是完美的。 现在我已经更新新的Xcode。 但是应用程序在'sqlite3_prepare_v2'上崩溃了很多次。

另外,我不closures数据库加class。 并且只打开一次。 我已经添加数据库打开下面的代码b'acs在debugging我有DBclosures。 但仍然崩溃。

紧急

谁能帮我 ?

提前致谢

我认为问题是在2592行。

不要把key作为string传递给sqlite3_key(…)不知道如何生成密钥,但如果第一个字节设置为'\ 0',那么strlen返回0(这可能会发生很多,如果你使用一些自动生成的助手基于NSData随机字节)

sqlite3_key定义:

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

它期望也允许“\ 0”的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...