提问人: 提问时间:5/3/2019 最后编辑:Dávid Pásztor 更新时间:5/3/2019 访问量:193
如何将以下代码从 Swift 2 翻译成 Swift 5?
How can I translate the following code from Swift 2 to Swift 5?
问:
我相信下面的代码是用 Swift 2 编写的。如何将语法转换为最新的 Swift (5)?
使用 Xcode 进行转换时,它给我留下了如下错误:
调用中的额外参数“usingEncoding”
和
无法调用非函数类型“URLSession”的值
原始(需要帮助转换):
let request = NSMutableURLRequest(URL: NSURL(string: "http://www.sample.com/sample.php")!)
request.HTTPMethod = "POST"
let postString = "a=\(customerLabel!)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
print("error=\(error)")
return
}
print("response = \(response)")
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("responseString = \(responseString)")
}
task.resume()
}
这是我的尝试,但它有错误:
let request = NSMutableURLRequest(url: URL(string: "http://www.sample.com/sample.php")!)
request.httpMethod = "POST"
let postString = "a=\(customerLabel!)"
request.HTTPBody = postString.data(usingEncoding: NSUTF8StringEncoding)
let task = URLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
print("error=\(error)")
return
}
print("response = \(response)")
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("responseString = \(responseString)")
}
task.resume()
答:
2赞
rmaddy
5/3/2019
#1
- 不要使用 .用。
NSMutableURLRequest
URLRequest
- 不要使用,使用.
NSString
String
- 查看文档,发现您需要 ,而不是 .
URLSession
shared
sharedInstance()
data(using .utf8)
.- 还有很多其他修复。
下面是你的固定代码,其中更好地处理了完成处理程序中的可选参数:
var request = URLRequest(url: URL(string: "http://www.sample.com/sample.php")!)
request.httpMethod = "POST"
let postString = "a=\(customerLabel!)"
request.httpBody = postString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("error=\(error)")
return
}
print("response = \(response)")
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print("responseString = \(responseString)")
}
}
task.resume()
评论