swift swift3 swift3.0.2

print() vs debugPrint() en swift



swift3 swift3.0.2 (3)

Esta podría ser una pregunta simple, pero debido a la clara comprensión entre print () y debug () imprime a la vez, no puedo entender dónde usar cada una de ellas.


Enlace del artículo: print-vs-debugprint

Si realiza una llamada de red y realiza una debugPrint(response) lugar de print(response) , obtendrá mucha más información valiosa. Vea el siguiente código de ejemplo:

Código de muestra : utilizando iTunes Search Api

let urlReq = URLRequest(url: URL(string: "https://itunes.apple.com/search?term=jack+johnson&limit=1")!) Alamofire.request(urlReq).responseJSON { (data) in print(data) print("/n/n/n/n/n/n/n/n/n") debugPrint(data) }

Salida de consola (eliminando algunos de los campos de respuesta)

Para imprimir

SUCCESS: { resultCount = 1; results = ( { artistId = 909253; artistName = "Jack Johnson"; artistViewUrl = "https://itunes.apple.com/us/artist/jack-johnson/id909253?uo=4"; } ); }

Para debugPrint

[Request]: GET https://itunes.apple.com/search?term=jack+johnson&limit=1 [Response]: <NSHTTPURLResponse: 0x610000223860> { URL: https://itunes.apple.com/search?term=jack+johnson&limit=1 } { status code: 200, headers { "Access-Control-Allow-Origin" = "*"; "Cache-Control" = "max-age=86345"; Connection = "keep-alive"; "Content-Disposition" = "attachment; filename=1.txt"; "Content-Length" = 1783; "Content-Type" = "text/javascript; charset=utf-8"; Date = "Sat, 23 Sep 2017 14:29:11 GMT"; "Strict-Transport-Security" = "max-age=31536000"; Vary = "Accept-Encoding"; "X-Apple-Partner" = "origin.0"; "X-Cache" = "TCP_MISS from a23-76-156-143.deploy.akamaitechnologies.com (AkamaiGHost/9.1.0.4-20866905) (-)"; "X-Cache-Remote" = "TCP_MISS from a23-45-232-92.deploy.akamaitechnologies.com (AkamaiGHost/9.1.0.4-20866905) (-)"; "X-True-Cache-Key" = "/L/itunes.apple.com/search ci2=limit=1&term=jack+johnson__"; "apple-originating-system" = MZStoreServices; "apple-seq" = 0; "apple-timing-app" = "86 ms"; "apple-tk" = false; "x-apple-application-instance" = 1000492; "x-apple-application-site" = NWK; "x-apple-jingle-correlation-key" = VEF3J3UWCHKUSGPHDZRI6RB2QY; "x-apple-orig-url" = "https://itunes.apple.com/search?term=jack+johnson&limit=1"; "x-apple-request-uuid" = "a90bb4ee-9611-d549-19e7-1e628f443a86"; "x-apple-translated-wo-url" = "/WebObjects/MZStoreServices.woa/ws/wsSearch?term=jack+johnson&limit=1&urlDesc="; "x-content-type-options" = nosniff; "x-webobjects-loadaverage" = 0; } } [Data]: 1783 bytes [Result]: SUCCESS: { resultCount = 1; results = ( { artistId = 909253; artistName = "Jack Johnson"; artistViewUrl = "https://itunes.apple.com/us/artist/jack-johnson/id909253?uo=4"; } ); } [Timeline]: Timeline: { "Request Start Time": 527869893.013, "Initial Response Time": 527869893.033, "Request Completed Time": 527869893.034, "Serialization Completed Time": 527869893.035, "Latency": 0.020secs, "Request Duration": 0.021secs, "Serialization Duration": 0.001secs, "Total Duration": 0.021secs }


Usar print() es una forma regular de visualizar lo que estás creando. No muestra información ''irrelevante'' que no es necesaria para representar la variable impresa.

p.ej

print("test") // prints: test

debugPrint() embargo, usar debugPrint() agrega el tipo inferido a la salida.

p.ej

debugPrint("test") // prints: "test"

Observe cómo agrega las comillas para hacerle saber que es una cadena.

Erica Sadun ha creado un ejemplo perfecto de cómo estas dos funciones difieren: Swift: Logging


Utiliza debugPrint cuando desea obtener más información sobre lo que se está imprimiendo en la consola. La información adicional suele ser útil para la depuración.

print() - Escribe las representaciones textuales de los elementos dados en la salida estándar.

debugPrint() - Escribe las representaciones textuales de los elementos dados más adecuados para la depuración en el resultado estándar.

Básicamente, debugPrint agrega información adicional que es útil para la depuración, como tipo de información, etc.

Un ejemplo:

print(1...5) // Prints "1...5" debugPrint(1...5) // Prints "CountableClosedRange(1...5)"