当我添加self.init(url:url)时,为什么要调用self.init?

问题描述 投票:0回答:1

所以我从初始化程序返回之前未在所有路径上调用错误'self.init'。尽管我对可能的结果感到困惑,因为在初始化要传递的URL的URLComponents之后,我添加了self.init(url:url)。然后使用URLRequest属性进行请求。但是为什么它仍然给我这个错误?有什么我想念的吗?知道为什么会有所帮助。谢谢。

import Foundation

extension URLRequest {

    init(service: ServiceProtocol) {

        guard let urlComponents = URLComponents(service: service),
            let url = urlComponents.url else {
            return
        }

        self.init(url: url)

        httpMethod = service.method.rawValue
        service.headers?.forEach { key, value in
            addValue(value, forHTTPHeaderField: key)
        }

        guard case let .requestParameters(parameters) = service.task, service.parametersEncoding == .json else {
            return
        }

        httpBody = try? JSONSerialization.data(withJSONObject: parameters)
    }
}
ios swift networking initialization network-protocols
1个回答
0
投票

这意味着如果从未成功创建url对象,则永远不会调用所需的初始化程序-这是禁止的。

您可以使init在守护程序的else语句中引发错误。

© www.soinside.com 2019 - 2024. All rights reserved.