gpt4 book ai didi

ios - 无法在 Alamofire 4.0 中使用类型为 'append' 的参数列表调用 '(String, withName: String)'

转载 作者:可可西里 更新时间:2023-11-01 01:26:21 24 4
gpt4 key购买 nike

我正在使用 Alamofire 4.0 在通过设备/相机选择或录制视频后将视频上传到服务器,但是当我尝试使用 append 调用上传功能时,我在所有 append 语句中都出现了这个错误,这是怎么回事在我的代码中。

第二个问题是我是否想在上传过程中显示进度百分比,我如何通过 Alamofire 实现这一点。

谢谢:)

读取所选/录制视频的 url 后的代码

 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {


let mediaType:AnyObject? = info[UIImagePickerControllerMediaType] as AnyObject?

if let type:AnyObject = mediaType {
if type is String {
let stringType = type as! String
if stringType == kUTTypeMovie as String {
let urlOfVideo = info[UIImagePickerControllerMediaURL] as? NSURL
if let url = urlOfVideo {
// 2

print(url)

let URL = try! URLRequest(url: "myurl", method: .post, headers: ["Authorization": "auth_token"])


Alamofire.upload(multipartFormData: { multipartFormData in

multipartFormData.append(url, withName: "videoFile", fileName: "filename", mimeType: "mov")
multipartFormData.append("video", withName: "load")
multipartFormData.append("record", withName: "type")

}, with: URL, encodingCompletion: { (result) in
// code
})


}
}
}
}
picker.dismiss(animated: true, completion: nil)

}

最佳答案

关于错误信息:

Cannot invoke 'append' with an argument list of type '(String, withName: String)'

如果我们看一下 Alamofire 的 MultipartFormDataappend 方法:

我们注意到 append(...) 方法不允许使用类型为 String 的第一个参数,但是,您在追加时尝试使用这种类型multipartFormData 关闭 Alamofire.upload

multipartFormData.append("video", withName: "load")
multipartFormData.append("record", withName: "type")

我相信您正在尝试使用以下方法:

public func append(_ data: Data, withName name: String) { ... }

在这种情况下,您需要将字符串编码为 Swift 类型 Data,例如如下:

multipartFormData.append("video".data(using: .utf8)!, withName: "load")
multipartFormData.append("record".data(using: .utf8)!, withName: "type")

至于你的电话:

multipartFormData.append(url, withName: "videoFile", fileName: "filename", mimeType: "mov")

上面的不可变 url 属于 NSURL 类型。在 Swift 3 中,您应该更喜欢使用基础类型 URL,它连接到 NSURL,但不是同一类型。我们在 Alamofire 4 中看到,它特别需要您尝试在上面调用的 append 函数的 URL 类型:

public func append(_ fileURL: URL, withName name: String, fileName: String, mimeType: String)

您自己注意到,您可以通过在您的实例 url 上使用 NSURLabsoluteURL 属性来调用此方法;但这只会产生一个类型为 URL 的可选值。更好的方法是从一开始就使用 URL 类型而不是 NSURL

关于ios - 无法在 Alamofire 4.0 中使用类型为 'append' 的参数列表调用 '(String, withName: String)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41401913/

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