状况
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>即可。
解决方法
- 在桥接文件 "XXX-Bridging-Header.h" 中的引用方式改变成<code>#import <FMDB/FMDB.h></code>
- 在需要调用的类里加上<code>import FMDB</code>,编译成功。

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

网友评论