Alamofire.swift(二)-URLRequestConvertible

这一篇学习:
URLRequestConvertible协议相关内容

相同的方法:

public protocol URLRequestConvertible {
    /// Returns a URL request or throws if an `Error` was encountered遇到.
    /// - throws: An `Error` if the underlying `URLRequest` is `nil`.
    /// - returns: A URL request.
    func asURLRequest() throws -> URLRequest
}

下面是新的方式:扩展协议

Swift 能扩展协议
扩展 URLRequestConvertible 协议来添加一个属性
协议扩展能添加已经实现的属性和方法, 但是不能为协议添加新的必须要实现的属性和方法,很像你写泛型函数那样, 协议扩展的内部实现只能访问保证存在的其它属性的方法
添加到协议扩展中的属性和方法对于所有遵守该协议的类型来说都是可访问的。
引用->swift-协议扩展-焉知非鱼

extension URLRequestConvertible {
    public var urlRequest: URLRequest? { return try? asURLRequest() }
}

好,现在再实现继承这个协议的URLRequest:

extension URLRequest: URLRequestConvertible {
    public func asURLRequest() throws -> URLRequest { return self }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 136.泛型 泛型代码让你可以写出灵活,可重用的函数和类型,它们可以使用任何类型,受你定义的需求的约束。你可以写出...
    无沣阅读 1,512评论 0 4
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,880评论 1 10
  • 扩展 扩展就是向一个已有的类、结构体、枚举类型或者协议类型添加新功能。这包括在没有权限获取原始源代码的情况下扩展类...
    cht005288阅读 475评论 0 0
  • 转载自:https://github.com/Tim9Liu9/TimLiu-iOS 目录 UI下拉刷新模糊效果A...
    袁俊亮技术博客阅读 11,961评论 9 105
  • 马克飞象是一款专为印象笔记(Evernote)打造的Markdown编辑器,通过精心的设计与技术实现,配合印象笔记...
    jeykigung阅读 368评论 0 3