ほとんどこちら -> (http://labs.torques.jp/2012/11/19/3018/ )に書かれてた通りだけど詰まったとこのメモ。
Xcodeでのsqlcipherのビルド時にエラー
clang: error: no such file or directory: ..../sqlite.c
先にmakeする。
-> http://stackoverflow.com/questions/19490208/unable-to-build-sqlcipher-in-xcode-missing-sqlite3-c
PodFile
pod 'FMDB'
pod 'FMDB/SQLCipher'
て両方するのかと勘違いしていたが、
pod 'FMDB/SQLCipher'
だけでOK。
[FMDatabaseQueue inTransaction:]でsetKeyするとエラー
エラーの出た例
FMDatabaseQueue *q = [[FMDatabaseQueue alloc] initWithPath:@"DB_PATH"];
[q inTransaction:^(FMDatabase *db, BOOL rollback){
[db setKey:@"SECRET"];
// ほげほげする
}];
Unknown error calling sqlite3_step (11: database disk image is malformed) eu
(最後のeu
てなんだかよく分からないけど付いてたママ)
[FMDatabaseQueue inTransaction:]
に入った時点で、begin transaction
されちゃっているので、その前に[FMDatabase setKey:]
しないとダメ
FMDatabaseQueue *q = [[FMDatabaseQueue alloc] initWithPath:@"DB_PATH"];
[q inDatabase:^(FMDatabase *db){
[db setKey:@"SECRET"];
}];
// ↑を1回最初にしてから
[q inTransaction:^(FMDatabase *db, BOOL rollback){
// ほげほげする
}];