在Swift3中使用FMDB遇到的问题

状况

OC项目转Swift,打算继续使用FMDB。Cocoapods进来后,在桥接文件 "XXX-Bridging-Header.h" 中写入#import "FMDB.h"。编译报错,如下图所示。

Cocoapods Podfile
platform :ios, '10.0' use_frameworks! targetsArray = ['HelloSwift'] targetsArray.each do |t| target t do pod 'FMDB/SQLCipher' pod 'Alamofire' end end inhibit_all_warnings!

原因

究其原因,发现是因为在Podfile用了use_frameworks!导致的。之前OC的项目没有加这个属性。

在Cocoapods 里使用<code>use_frameworks!</code>的话,是通过frameworks这个方式来管理pod的代码。不配置的话,则采用static libraries方式来管理。这也是之前OC项目里的方式,在需要调用的地方直接 <code>#import "FMDB.h"</code>即可。

解决方法

  1. 在桥接文件 "XXX-Bridging-Header.h" 中的引用方式改变成<code>#import <FMDB/FMDB.h></code>
  2. 在需要调用的类里加上<code>import FMDB</code>,编译成功。
示例代码

之前Cocoapods用static libraries方式的话是不需要在类里import FMDB的。但如果采用use_frameworks!属性的话,调用时不引用会报如下错误。

参考资料

  1. 在xcode 6.4 中使用swift和object-c混合编程,同时通过cocoapods进行管理的一些问题和解决办法]( http://blog.csdn.net/remote_roamer/article/details/47835347)
  2. cocoapods use_frameworks的问题
  3. Swift and Objective-C in the Same Project
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从上周开始, 正式使用Swift语言进行实际项目的开发, 虽然之前Swift的语法已经了解过, 并且写过几个简单的...
    Sunxb阅读 5,405评论 3 2
  • 1.背景 外包项目(OC)交接完毕,需要把另一个swift的项目的部分(很多)页面加入到这个外包项目中。有两种解...
    蓝摇扼剑阅读 7,523评论 0 1
  • 哈哈哈哈帅 哈哈哈
    qiuwanxiao阅读 1,189评论 0 0
  • 最近两三天,有些小失落。 看着身边的伙伴,都如此优秀,业绩爆棚 好生羡慕。掰着手指算了算,七姑八姨都算上30个人。...
    沐子芳菲阅读 1,748评论 0 1
  • http://blog.csdn.net/showhilllee/article/details/38398119/
    武个武6个武阅读 1,872评论 0 0