2016-10-07 5 views
6

Ich habe sqlite in meinem iOS-Projekt für die Datenbank verwenden. In iOS 9 funktionieren alle Dinge perfekt. Jetzt habe ich den neuen Xcode aktualisiert. Aber die App stürzt viele Male bei 'sqlite3_prepare_v2' ab.sqlite3_prepare_v2 exc_bad_access in iOS 10

Ich schließe auch keine Datenbanküberstunden. Und öffne es nur einmal. Ich habe DB in unten Code b'acs in debug hinzugefügt, ich habe DB schließen. Aber immer noch stürzte.

crash

Kann mir jemand helfen?

Vielen Dank im Voraus

+1

ich auch das gleiche Problem konfrontiert bin, bitte helfen Sie, wenn jemand das gleiche erlebt hat. JEDE HILFE WÄRE SEHR SCHÄTZEN. –

+0

Der einzige Hinweis, den ich daraus sehe, ist "Adresse = 0x0". Überprüfen Sie die Werte, die Sie an den Anruf übergeben, um sicherzustellen, dass sie nicht unerwartet null sind. –

+0

Ich übergebe keinen Nullwert. App stürzt beim Ausführen von 'sqlite3_prepare_v2' ab. –

Antwort

0

Ich denke Ausgabe in Zeile 2592.

Sie Schlüssel als Zeichenfolge nicht behandeln, wenn es um sqlite3_key (...) Nicht sicher vorbei, wie Sie Schlüssel generieren, aber wenn ersten Byte wird '\ 0' dann wieder sTRLEN 0 (was ziemlich oft passieren kann, wenn Sie einige automatisch generierte Helfer basiert auf zufälligen Bytes NSData verwenden)

sqlite3_key Definition:

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

Es erwartet nKey Bytes, wobei „\ 0“

auch erlaubt ist, versuchen

Statt:

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