ios - the - ¿Por qué el depurador beta de Xcode 6.3 muestra que Swift NSData tiene un número de bytes de 190 pero no tiene propiedades?
the swift programming language pdf (1)
NSData es una encapsulación de los bytes de datos sin procesar, antes de que se traduzca en una cadena o se analice como JSON.
Si desea ver lo que contienen estos datos, puede usar NSJSONSerialization ( let jsonDictionary = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: nil)
)
y luego lea el diccionario como cualquier otro: let value = jsonDictionary["key"]
Espero que sea de ayuda.
En Xcode 6.3 beta ejecutando Swift 1.2 aparentemente he recuperado con éxito un objeto JSON de una API, pero el depurador afirma que el objeto no tiene propiedades. La API se ejecuta en localhost y se llama así:
NSURLConnection.sendAsynchronousRequest( request, queue: queue,
completionHandler: completionHandler )
completionHandler
es un cierre con un punto de interrupción en él:
let completionHandler =
{
( response: NSURLResponse!, data: NSData!, error: NSError! ) -> Void in
// BREAKPOINT HERE
}
El depurador muestra que en Xcode 6.3 beta con datos de Swift 1.2 : ¡NSData! es un ObjectiveC.NSObject de 190 bytes pero sin propiedades, lo que parece totalmente contradictorio. Simplemente quiero los datos JSON que espero estén ocultos en algún lugar de esos bytes. No sé si el depurador, o el código que necesita actualizarse para Swift 1.2, o mi comprensión de las cosas, o alguna otra cosa es la culpa. Simplemente quiero el JSON.
Posdata
Los datos de JSON estuvieron allí todo el tiempo, como sugirió el conteo de bytes, y obtenerlos fue muy simple (usando SwiftyJSON):
let json = JSON( data: data )
Sin embargo, todo lo que ha sucedido con las propiedades en el depurador beta de Xcode 6.3 sigue siendo un misterio. No estoy agregando esto como una respuesta a mi propia pregunta, porque mientras funciona , puede que no sea necesariamente la respuesta . Soy demasiado nuevo para Swift para saber cuál podría ser la respuesta real, o incluso si la hay.