我正在尝试编写方法来下载带有自定义参数和标题的文件,但是当我编写方法时,XCode会显示未声明类型的使用类型'DownloadFileDestination'
这是我的代码:
public func download(JSON jsonObject:[String:AnyObject], inUrl url:URLStringConvertible,headers:[String:String]?,paramEnconding:ParameterEncoding) {
let destination = Alamofire.Request.suggestedDownloadDestination(directory: .DocumentDirectory, domain: .UserDomainMask)
Alamofire.download(method: Method, URLString: URLStringConvertible, parameters: [String: AnyObject]?, encoding: ParameterEncoding,headers: [String: String]?, destination: DownloadFileDestination) { temporaryURL, response in
let fileManager = NSFileManager.defaultManager()
let directoryURL = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
let pathComponent = response.suggestedFilename
return directoryURL.URLByAppendingPathComponent(pathComponent!)
}
}
请注意,我没有放下降价,但XCode仍会抛出错误。
答案 0 :(得分:0)
您的代码调用download
,如下所示:
Alamofire.download(method: Method, URLString: URLStringConvertible, parameters: [String: AnyObject]?, encoding: ParameterEncoding,headers: [String: String]?, destination: DownloadFileDestination) { ... }
但所有这些参数,Method
,URLStringConvertible
等,包括DownloadFileDestination
都是这些参数的类型。但是你应该传递值(例如那些相应类型的对象的实例)。大多数这些参数都是作为您在此处定义的方法的参数提供的,因此您只需使用它们。我只需要猜猜你想要的http方法。
代码示例中另一个奇怪的事情是定义destination
,调用为您构建闭包的suggestedDownloadDestination
方法。但是你然后实现了自己的闭包。做其中一个,但不是两个。
因此,消除冗余闭包并使用传递给此方法的参数,可以得到类似的结果:
func download(JSON jsonObject: [String: AnyObject], inUrl url: URLStringConvertible, headers: [String: String]?, paramEncoding: ParameterEncoding) {
let destination = Alamofire.Request.suggestedDownloadDestination(directory: .DocumentDirectory, domain: .UserDomainMask)
Alamofire.download(.POST, url, parameters: jsonObject, encoding: paramEncoding, headers: headers, destination: destination)
}
我猜你想要.POST
。也许你想使用.GET
(但是,在这种情况下,传递ParameterEncoding
是没有意义的,因为某些编码只在POST
请求中有意义。或许你的意思是在你的函数中有一个Method
参数。
但是,将所有这些放在一边,希望你现在明白为什么你收到了你所做的编译器错误。