這一篇學習:
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 }
}