swift 如何从NSURLSession获取字符串形式的数据?

jvidinwx  于 2023-03-28  发布在  Swift
关注(0)|答案(4)|浏览(159)

我正在使用一个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()
ctehm74n

ctehm74n1#

雨燕4

let data = String(bytes: data, encoding: String.Encoding.utf8)
ckocjqey

ckocjqey2#

如果你的问题是它在任务之外是空的,那是因为它在完成块结束后将超出范围。你需要将它保存在具有更大范围的地方。

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不会被设置,所以你应该真正尝试在完成块中使用它。

np8igboo

np8igboo3#

Swift使用String,而不是NSString
但是你可以像这样将NSString转换为String

var dataAsString:String = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
4si2a6ki

4si2a6ki4#

更新的:

let string = String(data: data, encoding: .utf8)

相关问题