XCode 12.5.1下SQLite.swift 0.13.0调用Connection.key方法报无该成员错误
问题原因
- 默认安装的SQLite.swift是官方标准版,底层调用系统原生的SQLite库,没有内置加密能力,
key加密相关API仅在SQLCipher集成版本中提供 - Carthage默认拉取主分支的标准版编译产物,不会自动启用SQLCipher编译选项,因此生成的Framework中没有加密相关的方法定义
解决方法
第一步:重新编译带SQLCipher支持的版本
不需要修改Cartfile的依赖地址,仅需要替换原有Carthage执行命令,传入指定的编译配置:
# iOS平台如果需要调试版用Debug-SQLCipher,发布版用Release-SQLCipher carthage update --platform iOS --configuration Release-SQLCipher
注:如果之前已经安装过标准版SQLite.swift,建议先删除Carthage目录、清空Carthage缓存后再执行上述命令,避免旧版本残留
第二步:替换项目引入的Framework
从Carthage/Build对应平台目录下,删除原有导入的SQLite.framework,替换为新编译生成的SQLiteCipher.framework
第三步:修正代码导入语句
将原有导入的SQLite模块替换为SQLiteCipher,修改后代码示例:
import Foundation import SQLiteCipher import SQLCipher let db = try Connection("\(dbName_UserData)") let code: String = self.getEncryptCode() try? db.key(code) // 此时可正常调用key方法
内容的提问来源于stack exchange,提问作者Beginnerrrrrr
相关产品推荐
相关产品推荐

