gpt4 book ai didi

swift - Alamofire:无法使用类型为 'URLRequest' 的参数列表调用 '(Method, NSURL)'

转载 作者:行者123 更新时间:2023-11-28 07:04:51 25 4
gpt4 key购买 nike

我正在玩请求路由器模式,它看起来像这样:

enum Router: URLRequestConvertible {

static let baseURLString = "https://somewhere"

case DoSomething

var URLRequest: NSURLRequest {
let (method: Method, path: String, parameters: [String: AnyObject]) = {
switch self {
case .DoSomething:
var params = [String: AnyObject]()
return (.GET, "/doSomething", params)
}
}()

let URL = NSURL(string: Router.baseURLString)!.URLByAppendingPathComponent(path)

let request = URLRequest(method, URL) // <- ERROR HERE

let encoding = ParameterEncoding.URL

return encoding.encode(request, parameters: parameters).0
}
}

我得到了前面提到的“无法使用类型为‘(Method, NSURL)’的参数列表调用‘URLRequest’”

查看 URLRequest 的方法签名,我看到:

func URLRequest(方法: Method, URL: URLStringConvertible) -> NSURLRequest

NSURL 符合 URLStringConvertible 协议(protocol),所以一切都应该是好的。但事实并非如此。现在,这是奇怪的部分:

如果我将 URLRequest 剪切并粘贴到与我的枚举相同的文件中,通过将其命名为 URLRequest 来调整其名称(以避免与原始文件冲突),并改为使用该函数,那么所有编译器错误都会消失。

我已将 Alamofire swift 文件复制到我的项目中,因为我的目标是 iOS 7,所以这也可能是一个因素。我没有使用嵌入式框架。

所以,我的问题是:为什么这段代码会抛出编译器错误,为什么简单地复制/粘贴/重命名 URLRequest 函数会导致它工作?

最佳答案

如果您在项目中使用 Alamofire 作为框架,您将看不到 URLRequest 函数,因为它不是public。您可以将其公开(我并不热衷于为一些微不足道的事情 fork AFNetworking),或者您可以在您的模块中实现此功能的副本。

不过,我在我的项目中直接使用 Alamofire 源进行了实验,我看到了与您描述的相同的奇怪行为。但是您可以通过在源文件中包含此函数的副本(如您所述)或完全绕过它来轻松规避此问题:

let request = NSMutableURLRequest(URL: URL)
request.HTTPMethod = method.rawValue

关于swift - Alamofire:无法使用类型为 'URLRequest' 的参数列表调用 '(Method, NSURL)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30949520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com