XCode9-beta:函数隐式声明'sqlite3_key'
我遇到了EncryptedStore SQLCipher wrapper加密核心数据的问题。
我已经添加了C-标志此为:XCode9-beta:函数隐式声明'sqlite3_key'
Debug = -DSQLITE_HAS_CODEC -DSQLITE_TEMP_STORE=2 -DSQLITE_THREADSAFE -DSQLCIPHER_CRYPTO_CC
Release = -DSQLITE_HAS_CODEC -DNDEBUG -DSQLITE_OS_UNIX=1 -DSQLITE_TEMP_STORE=2 -DSQLITE_THREADSAFE -DSQLCIPHER_CRYPTO_CC
,并用它作为:
func encryptedCoordinator() -> NSPersistentStoreCoordinator {
var coordinator:NSPersistentStoreCoordinator?
let ops:[String : Any] = [NSMigratePersistentStoresAutomaticallyOption:(true), NSInferMappingModelAutomaticallyOption:(true), EncryptedStorePassphraseKey:sqlCipherKey, EncryptedStoreDatabaseLocation:self.sqliteFileURL()]
do {
coordinator = try EncryptedStore.make(options: ops, managedObjectModel: self.managedObjectModel, error:())
}catch {
fatalError("Error opening encrypted DB: \(error)")
}
return coordinator!
}
它在XCode8工作正常,但它给错误XCode9-β。
错误行:
- (BOOL)changeDatabasePassphrase:(NSString *)passphrase error:(NSError *__autoreleasing*)error {
BOOL result;
int status;
if ([passphrase length] > 0) {
// Password provided, use it to key the DB
const char *string = [passphrase UTF8String];
status = sqlite3_rekey(database, string, (int)strlen(string));//ERROR line
string = NULL;
passphrase = nil;
} else {
// No password
status = SQLITE_OK;
}
result = status == SQLITE_OK;
if (result) {
result = [self checkDatabaseStatusWithError:error];
}
return result && (*error == nil);
}
函数声明中EncryptedStroe/sqlite3.h
为:
SQLITE_API int sqlite3_rekey(
sqlite3 *db, /* Database to be rekeyed */
const void *pKey, int nKey /* The new key */
);
SQLITE_API int sqlite3_rekey_v2(
sqlite3 *db, /* Database to be rekeyed */
const char *zDbName, /* Name of the database */
const void *pKey, int nKey /* The new key */
);
我认为这个问题是进口EncryptedStore.m文件执行: #import <sqlite3.h>
它采用<>等等系统sqlite库被导入,其中不包括这些功能。通过用“”改变<>一切都编译好。
不错的抓更新'EncryptedStore'类此解决!让我检查 – D4ttatraya
找到另一个解决方案here。
主要更改标题搜索路径。
尝试从$(PROJECT_DIR)/sqlcipher/src
将其更改为$(PROJECT_DIR)/sqlcipher
(即删除该路径的/src
)。”奏效了我。
如果我们使用CocoaPods导入库,这很有帮助。 – D4ttatraya
我通过从GitHub – D4ttatraya