如何从 NSURLSession 获取字符串形式的数据?
How do I get the data from an NSURLSession as a string?
我正在使用 API,它以简洁的格式提供数据 - 如何将其作为 String
?我可以打印它,但是将它保存为字符串似乎不起作用。
我特别想使用 NSURLSession
任务中的数据更新 UI 元素。
let url = NSURL(string: apiCall)
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
//I want to replace this line below with something to save it to a string.
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
task.resume()
Swift 使用 String
而不是 NSString
。
但是您可以像这样将 NSString
转换为 String
:
var dataAsString:String = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
如果你的问题是它在任务之外是空的,那是因为它在完成块结束后超出了范围。您需要将其保存在范围更广的地方。
let url = NSURL(string: apiCall)
var dataString:String = ""
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
//I want to replace this line below with something to save it to a string.
dataString = String(NSString(data: data, encoding: NSUTF8StringEncoding))
dispatch_async(dispatch_get_main_queue()) {
// Update the UI on the main thread.
self.textView.text = dataString
});
}
task.resume()
现在,当您访问 dataString 时,它将被设置为来自任务的数据。不过要小心,在任务完成之前,不会设置 dataString,因此您真的应该尝试在完成块中使用它。
Swift 4
let data = String(bytes: data, encoding: String.Encoding.utf8)
我正在使用 API,它以简洁的格式提供数据 - 如何将其作为 String
?我可以打印它,但是将它保存为字符串似乎不起作用。
我特别想使用 NSURLSession
任务中的数据更新 UI 元素。
let url = NSURL(string: apiCall)
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
//I want to replace this line below with something to save it to a string.
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
task.resume()
Swift 使用 String
而不是 NSString
。
但是您可以像这样将 NSString
转换为 String
:
var dataAsString:String = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
如果你的问题是它在任务之外是空的,那是因为它在完成块结束后超出了范围。您需要将其保存在范围更广的地方。
let url = NSURL(string: apiCall)
var dataString:String = ""
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
//I want to replace this line below with something to save it to a string.
dataString = String(NSString(data: data, encoding: NSUTF8StringEncoding))
dispatch_async(dispatch_get_main_queue()) {
// Update the UI on the main thread.
self.textView.text = dataString
});
}
task.resume()
现在,当您访问 dataString 时,它将被设置为来自任务的数据。不过要小心,在任务完成之前,不会设置 dataString,因此您真的应该尝试在完成块中使用它。
Swift 4
let data = String(bytes: data, encoding: String.Encoding.utf8)