這一篇學習:
URLRequestConvertible協(xié)議相關內容
相同的方法:
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
}
下面是新的方式:擴展協(xié)議
Swift 能擴展協(xié)議
擴展 URLRequestConvertible 協(xié)議來添加一個屬性
協(xié)議擴展能添加已經實現(xiàn)的屬性和方法, 但是不能為協(xié)議添加新的必須要實現(xiàn)的屬性和方法,很像你寫泛型函數(shù)那樣, 協(xié)議擴展的內部實現(xiàn)只能訪問保證存在的其它屬性的方法
添加到協(xié)議擴展中的屬性和方法對于所有遵守該協(xié)議的類型來說都是可訪問的。
引用->swift-協(xié)議擴展-焉知非魚
extension URLRequestConvertible {
public var urlRequest: URLRequest? { return try? asURLRequest() }
}
好,現(xiàn)在再實現(xiàn)繼承這個協(xié)議的URLRequest:
extension URLRequest: URLRequestConvertible {
public func asURLRequest() throws -> URLRequest { return self }
}