WCDB iOS/macOS常见问题

编译错误 'sqlcipher/sqlite3.h' file not found

若是通过git clone安装的WCDB,由于WCDB中包含git submodule,需要对其进行初始化。执行脚本:

  1. cd sqlcipher;
  2. git submodule update --init;

若是通过cocoapods安装的WCDB,可清理并更新缓存后重试。执行脚本:

  1. pod cache clean WCDB --all
  2. rm -rf ~/Library/Caches/CocoaPods
  3. pod repo update

编译错误 Since WCDB is an Objective-C++ framework, for those files in your project that includes WCDB, you should rename their extension .m to .mm.

WCDB需要使用Objective-C++进行编译。将引用WCDB的文件需要修改文件名后缀为.mm

在Xcode的View->Navigators->Show Report Navigatorbuild中,可以找到编译出错的文件。将其后缀名改为.mm即可。

pod install、carthage update、git clone等命令卡住

网络问题。这些操作需要访问国外的服务器,耐心等待或网络状况较好时再试。也可以修改其他镜像源

Cocoapods无法搜到WCDB或搜到的版本不是最新的

Cocoapods本地缓存问题。需执行pod repo update更新本地缓存。若仍无法解决,则清理缓存后重试,执行脚本

  1. pod cache clean WCDB --all
  2. rm -rf ~/Library/Caches/CocoaPods
  3. pod repo update

在offset函数报错:'Expected parameter declarator'

其他库的代码存在不规范的宏定义,将offset定义为别的字符串了。

编译错误 'type_traints' file not found

C++库使用不正确,应使用C++11。将工程的Build Settings->Language - C++->C++ Standard Library改为libc++即可。

枚举类型报错:Cannot initialize return object of type 'XXXX' with an rvalue of type 'XXX'

有两种方式可以解决:

  • 在枚举类型前加上类型转换,如(UITableViewCellEditingStyle)UITableViewCellEditingStyleDelete
  • 将工程配置的Build Settings->Language - C++->C++ Language Dialect改为GNU++98
    以上两种方法二选一即可。

Xcode不出现代码提示

修改文件名后缀为.mm后,Xcode需要重建索引。重启Xcode或等待一段时间后可解决。

命令行无法打开WCDB创建的加密数据库

除了password,还需要设置cipher的page size,默认为4096

  1. PRAGMA key="your_password";
  2. PRAGMA cipher_page_size=4096;

Cocoapods定义Virtual Table后crash

需在 podfile 中添加 use_framework! 的定义

WCDB Android常见问题