这一篇学习:
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 }
}
网友评论