Objective-C 库的 Swift “使用未声明的类型”
Posted
技术标签:
【中文标题】Objective-C 库的 Swift “使用未声明的类型”【英文标题】:Swift “use of undeclared type” for Objective-C library 【发布时间】:2017-02-22 14:46:29 【问题描述】:我想在 Swift 项目中使用 Objective-C 库 https://github.com/ameingast/cocoaimagehashing。我用 Cocoapods 安装了它。 我不能使用它,它在构建时会引发以下错误:“使用未声明的类型”或“使用未解析的标识符”。
令人惊讶的是,当我编写 OSImageHashingProvider 并单击它时,它会跳转到它定义的 .h 文件中。
我在项目中添加了一个桥接头,但我没有理由相信它处于活动状态。
我在 Build Settings -> Swift Compiler - General / Objective C Brigding Header 中添加了它。
Build Settings -> Other Linker Flags 有 -ObjC。和 -l “CocoaImageHashing”。
我的 pod 是:
target 'Projectname' do
pod 'CocoaImageHashing', :git => 'https://github.com/ameingast/cocoaimagehashing.git'
end
我不使用 use_frameworks!因为它在构建时引发错误。
解决办法是什么?
【问题讨论】:
你的 Swift 文件顶部有import CocoaImageHashing
吗?
它不接受它,说'没有这样的模块'CocoaImageHashing''
【参考方案1】:
问题是 Cocoapods 没有正确安装这个特定的库。
在目标级别,在 Build Settings -> Search Paths -> Header Search Paths 中: 当 /Headers/Public 结构不存在时,Cocoapods 生成的路径与任何实际的文件夹结构都不对应:“$PODS_ROOT/Headers/Public/CocoaImageHashing”。 我删除了它并保留了 $PODS_ROOT/CocoaImageHashing ,对应于文件夹 Projectname/Pods/Pods-Projectname.debug.xcconfig ,现在可以看到该库。
【讨论】:
以上是关于Objective-C 库的 Swift “使用未声明的类型”的主要内容,如果未能解决你的问题,请参考以下文章
将 Swift 导入 Objective-C - “使用未声明的标识符”