将从 Swift 中的 HTTP 请求返回的 NSData 转换为字符串
Converting the NSData returned from an HTTP request in Swift to a String
我有一些代码可以发出 HTTP 请求,然后使用数据、响应和错误结果调用一个函数。然后此函数尝试调用函数 handler
,该函数将 Swift String
作为其唯一参数。我试图将从 HTTP 请求返回的 NSData
对象 (data
) 转换为 NSString
,然后从那里转换为 Swift String
,但是XCode 当我尝试调用我的函数 (handler
) String
(res
).
let res: String = NSString(data: data, encoding: NSUTF8StringEncoding)!
handler(res)
关于如何修复此错误的任何想法?
NSString
可以类型转换为 Swift String
,它甚至会自动为您完成。因此,对于您的情况,以下内容应该足够了:
if let res = NSString(data: data, encoding: NSUTF8StringEncoding) {
handler(res)
} else {
// handle that the data wasn’t convertible to a string.
}
(我添加了 if let
部分,因为强制解包选项通常不是一个好主意。)
然而,您收到错误的原因是因为您将 res
常量定义为 String
类型。然后你尝试用类型系统不喜欢的 NSString
对象来初始化它。
你的闭包语法是错误的。
尝试将 handler: (String)
更改为 handler: (String) -> ()
func do_request(url: String, data: String?, handler: (String) -> ()) {
// Your code
if let res: String = NSString(data: data, encoding: NSUTF8StringEncoding)
{
handler(res)
}
}
阅读此内容了解更多信息:https://www.codefellows.org/blog/writing-completion-blocks-with-closures-in-swift
我有一些代码可以发出 HTTP 请求,然后使用数据、响应和错误结果调用一个函数。然后此函数尝试调用函数 handler
,该函数将 Swift String
作为其唯一参数。我试图将从 HTTP 请求返回的 NSData
对象 (data
) 转换为 NSString
,然后从那里转换为 Swift String
,但是XCode 当我尝试调用我的函数 (handler
) String
(res
).
let res: String = NSString(data: data, encoding: NSUTF8StringEncoding)!
handler(res)
关于如何修复此错误的任何想法?
NSString
可以类型转换为 Swift String
,它甚至会自动为您完成。因此,对于您的情况,以下内容应该足够了:
if let res = NSString(data: data, encoding: NSUTF8StringEncoding) {
handler(res)
} else {
// handle that the data wasn’t convertible to a string.
}
(我添加了 if let
部分,因为强制解包选项通常不是一个好主意。)
然而,您收到错误的原因是因为您将 res
常量定义为 String
类型。然后你尝试用类型系统不喜欢的 NSString
对象来初始化它。
你的闭包语法是错误的。
尝试将 handler: (String)
更改为 handler: (String) -> ()
func do_request(url: String, data: String?, handler: (String) -> ()) {
// Your code
if let res: String = NSString(data: data, encoding: NSUTF8StringEncoding)
{
handler(res)
}
}
阅读此内容了解更多信息:https://www.codefellows.org/blog/writing-completion-blocks-with-closures-in-swift