将 SDWebImage 导入 Swift 项目

Posted

技术标签:

【中文标题】将 SDWebImage 导入 Swift 项目【英文标题】:Importing SDWebImage into Swift project 【发布时间】:2015-06-08 17:19:03 【问题描述】:

尝试将 SDWebImage 安装到我的 Swift 项目中。我正在使用以下说明 (https://github.com/rs/SDWebImage):

从下载页面下载并解压最新版本的框架 右键单击项目导航器并选择“将文件添加到“您的项目”: 在对话框中,选择 SDWebImage.framework: 选中“将项目复制到目标组的文件夹(如果需要)”复选框

所以我 git clone --recursive 来自 GitHub 的项目,我将 .xcodeproj 文件拖到我的项目中(因为据我所知没有 SDWebImage.framework 文件,这一直适用于其他框架),我完成其余说明:

在您的应用程序项目应用程序的目标设置中,找到“构建阶段”部分并打开“将二进制文件与库链接”块 再次单击“+”按钮并选择“ImageIO.framework”,这是渐进式下载功能所需要的: 添加链接器标志 打开“构建设置”选项卡,在“链接”部分,找到“其他链接器标志”设置并添加“-ObjC”标志

然后我在桥接头中添加#import <SDWebImage/UIImageView+WebCache.h>。我构建了项目,我得到:“SDWebImage/UIImageView+WebCache.h”未找到。我已经尝试了这些步骤的一些变化,但似乎没有任何效果。我做错了什么?

编辑

很确定这是因为我没有拉入 SDWebImage.framework 文件,而是拉入 .xcodeproj 文件。但是我已经从 zip 下载并克隆了 repo,那里似乎没有 .framework 文件...

更新

所以显然我应该下载已编译的框架,我在另一个答案中找到了它:https://***.com/a/30545367/918065。也许?我没有线索。当我导入 .framework 文件时,我的桥接头工作并识别了#import <SDWebImage/UIImageView+WebCache.h>,但它无法识别imageView.sd_...。所以还在努力。

最后编译的框架是 3.7.0,你可以找到它:https://github.com/rs/SDWebImage/releases

为了更方便访问,框架的直接链接如下:https://github.com/rs/SDWebImage/releases/download/3.6/SDWebImage-3.6.framework.zip

【问题讨论】:

【参考方案1】:

导入“SDWebImage/UIImageView+WebCache.h”

【讨论】:

我正在使用 Swift - 此导入不适用于项目文件或我的桥接头。 您是否在构建设置选项卡中设置了桥接头路径? @itstrueimryan 是的,它可以识别桥接头。我在其中导入了 Facebook,它运行良好,并且遵循 #import <FBSDK.....> 格式【参考方案2】:

对我来说,当我从导入中删除 SDWebImage 时它会有所帮助。所以我在我的project-Bridging-Header.h 中有这个:

#import "UIImageView+WebCache.h"

有关 ios 桥接头的更多信息: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

【讨论】:

对我不起作用。您是否将 SDWebImage.xcodeproj 或 SDWebImage.framework 导入到您的项目中?因为我搜索了文件夹并没有.framework文件,但我认为这是问题所在。 显然我必须下载已编译的框架......我只在另一个答案中找到:***.com/a/30545367/918065 它对我有用。将 cocoapods 版本从 0.39 更新到 1.0.1.beta.5 后,桥接头中的 SDWebImage 导入出现错误“找不到文件”。将导入更改为 #import "UIImageView+WebCache.h" 解决了这个问题。谢谢。【参考方案3】:

我推荐使用 CocoaPods 来处理依赖关系。 CocoaPods 是一个依赖管理器,旨在解决此类问题。

按照他们网站上的安装指南:https://cocoapods.org

【讨论】:

是的,但是我在使用其他一些框架时遇到了问题,所以我决定使用手动方法,并且对于我使用过的其他 4 个框架来说效果很好,所以我想看看我是否可以在我跳回 CocoaPods 之前保持一致【参考方案4】:

所以在我最终意识到您不应该使用主 SDWebImage 文件夹,而是将其中的 SDWebImage 文件夹用于项目之前,没有什么对我有用。拖入 .xcodeproj 文件、整个文件夹或 .framework 文件不起作用。导入那个子 SDWebImage 文件夹,然后利用 Libor Zapletal 的回答:#import "UIImageView+WebCache.h" 最终让这件事对我有用。

【讨论】:

【参考方案5】:

这在我的情况下有效:

    在您的桥接头中添加#import <SDWebImage/UIImageView+WebCache.h> 在项目Build Settings中,在Objective-C Bridging Header中设置桥接头文件的路径。前任。 My Project/BridgingHeader.h

【讨论】:

这是不正确的。斜杠前不应包含“我的项目”。实际上应该没有斜线

以上是关于将 SDWebImage 导入 Swift 项目的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中使用 UIActivityIndi​​cator-for-SDWebImage

iOS之SDWebImage的使用

Swift - 无法识别的选择器发送到 SDWebImage 方法上的实例

SDWebImage 库在 swift 3 Xcode 8.0 中出现错误

使用 SDWebImage 为 UICollectionView 可重用单元从路径加载图像 - Swift

SDWebImage 使用 Swift 在 CellView 中将图像设置为 UIButton