在运行 Swift 1.2 的 Xcode 6.3 beta 中,我似乎成功地从 API 检索了一个 JSON 对象,但调试器声称该对象没有属性。 API 在本地主机上运行,调用方式如下:
NSURLConnection.sendAsynchronousRequest( request, queue: queue,
completionHandler: completionHandler )
completionHandler
是一个带有断点的闭包:
let completionHandler =
{
( response: NSURLResponse!, data: NSData!, error: NSError! ) -> Void in
// BREAKPOINT HERE
}
调试器显示在带有 Swift 1.2 的 Xcode 6.3 beta 中 data: NSData! 是一个 190 字节但没有属性的 ObjectiveC.NSObject,这看起来完全矛盾。我只是想要我希望隐藏在这些字节中某处的 JSON 数据。我不知道调试器,或者需要为 Swift 1.2 更新的代码,或者我对事物的理解,或者其他什么是罪魁祸首。我只想要 JSON。
后记
JSON 数据一直存在,正如字节数所暗示的那样,获取它非常简单(使用 SwiftyJSON):
let json = JSON( data: data )
Xcode 6.3 beta 调试器中的属性到底发生了什么仍然是个谜。我不会将此添加为我自己问题的答案,因为虽然它有效,但不一定是答案。我对 Swift 还很陌生,不知道实际答案可能是什么,即使有也不知道。
最佳答案
NSData 是原始数据字节的封装,在它被翻译成字符串或解析为 JSON 之前。
如果你想看看这个数据包含什么,那么你可以使用 NSJSONSerialization (let jsonDictionary = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil)
)
然后像阅读其他字典一样阅读字典:let value = jsonDictionary["key"]
希望对您有所帮助。
关于ios - 为什么 Xcode 6.3 beta 调试器会显示 Swift NSData 的字节数为 190 但没有属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29448953/