我如何从nsurlsession作为字符串获取数据



我正在使用一个以整洁格式为我提供数据的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 4

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

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

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()

现在,当您访问数据集时,它将设置为从任务中的数据设置。不过要警惕,直到任务完成之前,数据串将不会设置,因此您应该真正尝试在完成块中使用它。

Swift使用String而不是NSString

但是您可以将NSString施放到String

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

另一个选项:

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

编辑:我错误地写道,这将是一个较新的版本,只是另一个。

最新更新