类不符合RequestRetrier协议

2024-03-15

我一直在将我的项目迁移到 swift3,并一直在努力让 Alamofire RequestRetrier 协议正常工作。我遵循 Alamofire 4.0 迁移指南:https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%204.0%20Migration%20Guide.md#request-retrier https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%204.0%20Migration%20Guide.md#request-retrier

这是我正在尝试构建的课程:

import Foundation
import Alamofire

class RequestAccessTokenAdapter: RequestAdapter, RequestRetrier {
    private let accessToken: String

    init(accessToken: String) {
        self.accessToken = accessToken
    }

    func adapt(_ urlRequest: URLRequest) throws -> URLRequest {
        var urlRequest = urlRequest

        if (urlRequest.url?.absoluteString.hasPrefix(MyServer.serverUrl()))! {
            urlRequest.setValue("Bearer " + accessToken, forHTTPHeaderField: "Authorization")
        }

        return urlRequest
    }

    func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion) {
        if let response = request.task?.response as? HTTPURLResponse, response.statusCode == 401 {
            completion(true, 1.0) // retry after 1 second
        } else {
            completion(false, 0.0) // don't retry
        }
    }

}

构建失败并出现以下错误:类型“RequestAccessTokenAdapter”不符合协议“RequestRetrier”

我一直在尝试使用 Alamofire 4.2.0 和 AlamofireObjectMapper 4.0.1 以及 Alamofire 4.0.1 和 AlamofireObjectMapper 4.0.0,但我不断收到相同的错误。

如果我只使用 RequestAdapter 协议并删除应该功能,一切都会构建正常,但我似乎无法构建 RequestRetrier,而我的项目也需要它。

知道我的课堂上缺少什么吗?

EDIT:

我似乎遇到了命名空间问题,因为在 should-function 的定义中将 Error 替换为 Swift.Error 后代码构建成功:

func should(_ manager: SessionManager, retry request: Request, with error: Swift.Error, completion: @escaping RequestRetryCompletion) {

我也看到了同样的问题。查看 Alamofire 源代码后,我发现 XCode 正在自动生成无效的方法签名should方法。通过显式添加Alamofire模块名称为SessionManager, Request and RequestRetryCompletion类型声明,在should方法的参数列表,我终于能够构建它了。所以,你的should方法应该看起来像这样:

func should(_ manager:      Alamofire.SessionManager,
            retry request:  Alamofire.Request,
            with error:     Error,
            completion:     @escaping Alamofire.RequestRetryCompletion) {

    // Do something

}

我希望这有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类不符合RequestRetrier协议 的相关文章

  • 使用硬件加速内容截取 WKWebview 的屏幕截图

    我在截屏时遇到严重问题WKWebview内容当有硬件加速内容 一些在 iframe 内运行的特定赌场游戏 到目前为止 我使用了像大家建议的标准截图方式 UIGraphicsBeginImageContextWithOptions conta
  • UI 测试 - isSelected 始终返回 false

    我们最近使用 Xcode 8 2 1 8C1002 将 Swift 2 3 项目更新为 Swift 3 现在大多数与 tableViews 和 isSelected 属性相关的 UI 测试都不起作用 即使选择了对象 它也始终返回 false
  • 取消封装在 NSOperation 中的 Alamofire 请求会导致多个 KVO?

    我的Xcode版本 6 3 2Alamofire 版本 1 2 2 通过 Cocoapods 安装 为了设置maxConcurrentOperationCount限制并发操作数NSOperationQueue 我包裹我的阿拉莫菲尔 http
  • Swift - 特殊字符的编码和解码字符串

    这是我的问题 我目前正在开发一个应用程序 包括即时聊天 使用 FCM 一切正常 除了当我尝试发送 或表情符号等特殊字符时 收到的推送通知包含好的字符串 但是当讨论保存在服务器上然后重新加载时 我无法读取它们并获取 UTF8 文本 例如 的
  • 无法更新本地预定通知内容

    在一次 WWDC 会议中 我获得了用于更新现有通知的代码片段 我认为这不起作用 正在尝试更新通知内容 首先 我请求待处理的通知UNUserNotificationCenter这总是有效的 然后 我创建新请求以使用现有唯一标识符更新通知 有
  • Alamofire 图像:在 af_setImageWithURL() 之后从 AutoPurgingImageCache 中获取图像

    我在我的项目中使用 AlamofireImage 我用someImageView af setImageWithURL url a lot 然而 在某些时候我需要从 imageCache 手动获取图像 因为我不想将其应用到 UIImageV
  • 将 C 字符串数组转换为 Swift 字符串数组

    在 Swift 3 中 带有签名的 C 函数const char f 被映射到UnsafePointer
  • 如何在 Swift 中打开 URL?

    openURL已在 Swift 3 中弃用 任何人都可以提供一些如何替换的示例openURL options completionHandler 尝试打开网址时有效吗 所有你需要的是 guard let url URL string htt
  • Swift 3 上的通知中心问题[重复]

    这个问题在这里已经有答案了 我正在学习 Swift 3 并且正在尝试使用NSNotificationCenter 这是我的代码 func savePost let postData NSKeyedArchiver archivedData
  • 解析嵌套的 JSON Swift 3 [重复]

    这个问题在这里已经有答案了 我正在尝试在 Swift 3 中解析复杂的 JSON 文件 我在获取值时遇到问题 我找到了一些示例代码并尝试对其进行了一些调整 但它不起作用我当前收到错误 Type NSArray 没有下标成员 我什至不确定这是
  • Swift 3 - 扩展字典数组

    我有这一系列字典 var dicts key1 value1 key2 value2 key1 value3 key2 value4 我应该如何延长Array这样我就有这个功能 dicts values of key1 result val
  • Swift Alamofire + Promise 捕获

    伙计们 除了catch之外 以下工作正常 xcode错误与expected member name following 这是使用 PromiseKit 进行承诺的正确方法吗 欢迎所有建议 谢谢 IBAction func loginButt
  • Swift 在数组切片中的“fromAfter”调用是什么?

    斯威夫特 3 有upTo and through 分别是非包含的 包含的 func 前缀 upTo Int 返回从集合开头开始的子序列最多但不包括 指定位置 func 前缀 通过 Int 返回从集合开头开始的子序列through指定位置 另
  • 如何在半屏上呈现 ViewController

    我有一个UIViewController其中只有一个UIView从底部覆盖了 viewController 的 1 3 像这样 我想在另一个 ViewController 上呈现这个 viewController 它应该从底部动画显示 并且
  • 在 Swift 3 中从 UUID 获取数据

    我用 Objective C 编写了以下代码 我试图在 Swift 3 中使用它 一些等效函数似乎在 Swift 3 中不可用 下面的代码是 Objective C 中的代码 NSUUID vendorIdentifier UIDevice
  • 更改 iOS 地图中的图钉方向

    环球银行金融电信协会3 0 MKMAP视图 iOS Note 融合的AppleMap 不与GoogleMap 我做了以下事情 实现地图并将自定义图像添加到用户位置注释 当地图打开时 它会在正确的位置显示用户位置 我的要求 当用户移动到不同方
  • Swift 3 异步调度警告

    我有这个代码 DispatchQueue global priority DispatchQueue GlobalQueuePriority default async let url URL string itemImageURL let
  • Swift 3 中的 NSFetchedResultsController 删除缓存

    目前正在迁移到 swift 3 无法完全弄清楚解析器想要什么NSFetchedResultsController deleteCache withName rootCache 使用这种语法 我得到一个 Type String 构建时出现不符
  • 失败:错误域=NSURLErrorDomain代码=-1004“无法连接到服务器。”

    首先 我想列出我已阅读并尝试实现答案的帖子 避免重复 iOS 9 和 iOS 10 中的应用程序传输安全问题 https stackoverflow com questions 40280936 app transport security
  • 具有自签名证书的 Alamofire / ServerTrustPolicy

    我想使用 Alamofire 通过带有自签名证书的 https 连接与我的服务器进行通信 我的环境在本地主机上运行 我尝试连接 但响应始终如下所示 Success false Response String nil 我用下面的代码完成了它

随机推荐

  • AWS 您的账户尚未准备好发布消息

    我刚刚使用我的控制台帐户注册了 AWS 论坛 都好 我第一次发帖 我得到 Your account is not ready for posting messages yet 我没有广告拦截器 所以我没有找到任何其他解决方案 任何帮助表示赞
  • 具有多列 data.frames 的两个列表的条件匹配

    我有一个 data frames 列表 每个 data frames 中有多个列 每个 data frame 都有相同的结构 此外 我还有另一个包含多个 data frames 的列表 假设这是两个列表 firstlist lt list
  • Gnu Parallel:嵌套并行

    是否可以在由 gnu parallel 生成的脚本的多次运行中调用 gnu parallel 我有一个运行了 100 秒的 python 脚本顺序的迭代 并且在每次迭代中的某个位置 并行计算 4 个值 使用 gnu 并行 现在我想再次使用
  • 如何在ipython笔记本中设置matplotlib图形默认大小?

    我使用 ipython Notebook pylab inline 来启动 ipython Notebook 显示的 matplotlib 图形尺寸对我来说太大了 我必须手动调整它 如何设置单元格中显示的图形的默认大小 对我来说就像一个魅力
  • 不允许使用字符串类型(在“id”处,值为“@id/bAdd”)

    我收到一条错误消息不允许使用字符串类型 在 id 处 值为 id bAdd 我已经清理了该项目 早些时候一切都正常 我不知道发生了什么 导致了这个错误
  • 如何读取txt文件并将其保存在html中的javascript数组中

    有很多解决方案 但我在 html 网页上的 javascript 中发现很少或根本没有 我的html 文件所在的位置有一个名为sample txt 的数据文件 我的目标是将 txt 文件加载到数组中 该数组可用于创建表格并显示在 html
  • 如何将Entity框架中的DbSet转换为ObjectQuery

    我正在使用 Code First 方法 并遇到一个需要将 DbSet 转换为 ObjectQuery 的问题 这就是我为转换所做的 ObjectContext objectContext IObjectContextAdapter db O
  • 在 C# 中为 0x80000000 == 2147483648,但在 VB.NET 中则不然

    In C 0x80000000 2147483648 outputs True 在 VB NET 中 H80000000 2147483648 outputs False 这怎么可能 这与语言背后的历史有关 C 始终支持无符号整数 您使用的
  • DB2 时间戳选择语句

    我正在尝试运行一个简单的查询 该查询根据时间戳获取数据 如下所示 SELECT FROM
  • C#:无法以编程方式填充 DataGridView

    我没有使用设计器 而是尝试以编程方式填充我放在 Winform 上的 DataGridView 当我查看调试器下的表格时 它具有正确的列和行数 问题是网格在我的表单上显示为空的灰色框 当我通过 VS 2008 Designer 将网格绑定到
  • 禁用 WPF 标签加速键(缺少文本下划线)

    我正在设置 ContentLabel 的值包含下划线的字符串 第一个下划线被解释为加速键 不更改底层字符串 通过替换所有 with 有没有办法禁用标签的加速器 如果您使用 TextBlock 作为标签的内容 则其文本将不会吸收下划线
  • 循环和递归之间的实际区别是什么

    我目前正在使用 PHP 工作 因此这个示例将使用 PHP 但问题适用于多种语言 我正在和我的一个朋友一起做这个项目 和往常一样 我们遇到了一个大问题 现在我们俩都回家了 无法解决问题 那天晚上我们都找到了解决办法 只是我用了循环来解决问题
  • Swift - 在带有可选参数的泛型函数中以 Nil 作为参数

    我正在尝试创建一个可以接受可选参数的通用函数 这是我到目前为止所拥有的 func somethingGeneric
  • 健全性检查:作为主键浮动?

    我正在使用旧的 sql server 2000 数据库 将其中的一些信息与我正在构建的新应用程序混合在一起 我注意到几个表中的一些主键是浮点数而不是任何类型的整数 它们不是外键并且都是唯一的 我想不出有任何理由让任何人想要让他们的唯一主键
  • 使用 Python 和 Selenium 抓取图形上的悬停

    我正在尝试从中抓取数据http fuelinsights gasbuddy com Charts http fuelinsights gasbuddy com Charts使用Python和Selenium 困难的部分是 只有当鼠标悬停在折
  • Spotify 应用程序请求授权

    我正在尝试使用以下代码从 Spotify 获取 访问令牌 var encoded btoa client id client secret function myOnClick console log clikced ajax url ht
  • iTextSharp 许可 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们想在我们的一个项目中使用 iTextSharp DLL 来提取 PDF 文本 但我第二次考虑将其发布
  • iOS9 上的 Admob 和插页式广告

    今天我注册了 adMob 并开始在我的应用程序中处理 adMob 广告 第一个是游戏 带有视图控制器 我想在游戏结束后立即显示插页式广告 所以我想在游戏结束后立即加载插页式广告游戏结束加载的视图 此视图仅在游戏结束后才可访问 并且游戏持续一
  • 对数组中的对象执行块操作并在全部完成时完成

    我有一个对象数组 我想对其执行块操作 我不确定执行此操作的最佳方法 我正在做类似下面代码的事情 但我认为这不是最佳实践 进行此类操作的最佳方法是什么 void performBlockOnAllObjects NSArray objects
  • 类不符合RequestRetrier协议

    我一直在将我的项目迁移到 swift3 并一直在努力让 Alamofire RequestRetrier 协议正常工作 我遵循 Alamofire 4 0 迁移指南 https github com Alamofire Alamofire