美文网首页
关于集成WCDB遇到的坑

关于集成WCDB遇到的坑

作者: ekou | 来源:发表于2018-08-22 17:56 被阅读0次

今天公司项目需要用到数据库功能,之前一直用FMDB,后来看过关于WCDB的介绍,就想用WCDB试试手,然鹅集成并不顺利,下面说下遇到的坑。

官方提供了3种集成方式:(直接复制github,用斜体表示,参考链接:https://github.com/Tencent/wcdb/wiki)

1.通过Carthage安装

先安装Carthage

在Cartfile中添加 github "Tencent/WCDB",并执行carthage update;

将Carthage/Build/目录下iOS或Mac的WCDB.framework添加到你的项目工程配置的Build Phases->Linked Binary and Libraries中。

点击你的项目工程配置的Build Phases中的+选项,在弹出菜单中选择New Run Script Phase。在创建的脚本中添加 carthage copy-frameworks ,并在Input Files中添加对应平台的路径$(SRCROOT)/Carthage/Build/iOS/WCDB.framework 或 $(SRCROOT)/Carthage/Build/Mac/WCDB.framework。

在你的代码文件头引入头文件#import 。

由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀.m改为.mm

2.通过cocoapods安装

先安装Cocoapods

通过 pod repo update 更新WCDB的cocoapods版本。

在Podfile对应的target中,添加pod 'WCDB',并执行pod install --verbose。

在项目中使用CocoaPods生成的.xcworkspace运行工程。

在你的代码文件头引入头文件#import 。

由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀.m改为.mm

通过动态库安装: 动态库与iOS 7不兼容,因此需支持iOS 7的需要通过静态库安装。

获取WCDB源码,并更新sqlcipher的submodule。

git clone https://github.com/Tencent/wcdb.git

cd wcdb

git submodule update --init sqlcipher

将WCDB.xcodeproj添加到你的工程中.

在你的项目工程配置的General->Enbedded Binaries中添加WCDB.framework。注意这里有两个WCDB.framework,要选择动态库那个。选完后可在Build Phases->Target Dependencies中确认,若为WCDB则正确,而WCDB iOS Static则是静态库使用的。

在你的代码文件头引入头文件#import 。

由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀.m改为.mm

3.通过静态库安装:

获取WCDB源码,并更新sqlcipher的submodule。

git clone https://github.com/Tencent/wcdb.git

cd wcdb

git submodule update --init sqlcipher

将WCDB.xcodeproj添加到你的工程中.

在你的项目工程配置的Build Phases->Target Dependencies中添加WCDB iOS Static.framework。

在你的项目工程配置的Build Phases->Linked Binary and Libraries中添加WCDB.framework和libz.tbd。注意,这里有两个WCDB.framework,需要添加WCDB iOS Static的target下的WCDB.framework

在你的项目工程配置的Build Settings->Other Linker Flags中添加-all_load和-ObjC。

在你的代码文件头引入头文件#import 。

由于WCDB是基于Objective-C++,因此需要将引用WCDB的源文件后缀.m改为.mm

我选择的是第二种方式cocoapods安装

pod install完成,直接运行Xcode报错,错误原因为  “use of '@import' when modules are disabled,....“  位置在引用的ProjectName-Bridging-Header.h里面的“@import Charts;” 行代码(项目里面用到了oc与swift混编“Charts 为swift代码”

解决思路:网上查找后获取到一条信息,下面是原话

大概意思是如果在cpp或.文件里引用了桥接文件modules将会自动禁用;

第一反应我的桥接文件没有放在 cpp文件也没有放在.mm文件,怎么一样报错;

后来一想,应该是桥接文件放在了.pch里面,马上将桥接文件移出只在用到的地方调用;

运行,还是报错,这次报的是"'type_traits' file not found",如图:

报错的文件在WCDB里面,这时想到是不是编译器的问题,于是将Build Settings下的 C++ Standard Library的值从libstdc++(GNU C++ standerd library) 切换到libc++(LLVM C++ standerd library with C++11 support),运行,Build Success!!!

暂时记录一下,以免后面再用的时候忘记

相关文章

  • 关于集成WCDB遇到的坑

    今天公司项目需要用到数据库功能,之前一直用FMDB,后来看过关于WCDB的介绍,就想用WCDB试试手,然鹅集成并不...

  • 动画集成中遇到的坑

    动画集成中遇到的坑 —— 动画过程中的点击问题(一)动画集成中遇到的坑 —— UIViewKeyframeAnim...

  • WCDB for iOS/macOS

    基本特性 易用,WCDB支持一句代码即可将数据取出并组合为object。 WINQ(WCDB语言集成查询):通过W...

  • iOS-集成UMeng消息推送遇到的坑货🔥

    iOS-集成UMeng消息推送遇到的坑货? 关于umeng的推送集成教程查看上一篇文章: 基于UMeng消息推送测...

  • ReactNative jPush集成的坑

    ReactNative jPush集成的坑 最近项目需要适配小米、华为、魅族三方的推送,在集成的时候遇到了很多坑,...

  • 关于腾讯云视频集成遇到的坑

    最近我做了一个关于直播的项目,直播功能不太复杂,主要是给我们内部的主播和嘉宾使用,其中包括音频直播和视频直播,不需...

  • 集成FSCalendar遇到的坑

    项目用到的签到日历功能,所以就集成了FSCalendar这个开源库 常用设置 具体设置,可以参考下图 遇到的问题:...

  • 集成cocoapods 遇到的坑

    1.如果更新Gem的时候, 使用的是默认的https://rubygems.org/或者http://ruby.t...

  • Tinker集成遇到的坑

    在集成tinker热修复的时候遇到的几个坑,有必要记录一下! 1.在命令行执行gradlew tinkerPatc...

  • 集成framework遇到的坑

    1 集成h t t p d n s的时候先使用cocoa po d s ,一切安装正常,但是发现app build...

网友评论

      本文标题:关于集成WCDB遇到的坑

      本文链接:https://www.haomeiwen.com/subject/cduyiftx.html