web-dev-qa-db-fra.com

print () vs debugPrint () dans swift

Cela pourrait être une question simple, mais en raison d’une compréhension claire entre print () et debug () print dans Swift, je suis incapable de comprendre où les utiliser. 

33
Rajan Twanabashu

Vous utilisez debugPrint lorsque vous souhaitez plus d'informations sur ce qui est imprimé sur la console. Les informations supplémentaires sont généralement utiles pour le débogage.

print () - Écrit les représentations textuelles des éléments donnés dans la sortie standard.

debugPrint () - Ecrit les représentations textuelles des éléments donnés les plus appropriées pour le débogage dans la sortie standard.

Fondamentalement, debugPrint ajoute des informations supplémentaires utiles pour le débogage, telles que les informations de type, etc.

Un exemple:

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


debugPrint(1...5)
// Prints "CountableClosedRange(1...5)"
35
Iggy

Utiliser print() est un moyen régulier de voir ce que vous créez. Il ne montre pas les informations «non pertinentes» qui ne sont pas nécessaires pour représenter la variable imprimée. 

par exemple.

print("test")
// prints: test

L'utilisation de debugPrint() ajoute cependant le type inféré à la sortie. 

par exemple. 

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

Notez comment il ajoute les guillemets pour vous faire savoir qu'il s'agit d'une chaîne. 

Erica Sadun a créé un exemple parfait de la différence entre ces deux fonctions: Swift: Logging

17
Emptyless

Lien de l'article: print-vs-debugprint

Si vous passez un appel réseau et faites une debugPrint(response) au lieu de print(response), vous obtiendrez des informations beaucoup plus précieuses . Consultez l'exemple de code ci-dessous: 

Exemple de code: avec 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)
    }

Console Output (Suppression de certains champs de réponse)

Pour print

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

Pour 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
}
8
Abhishek Bedi

si vous implémentez les protocoles CustomDebugStringConvertible et CustomStringConvertible, alors la méthode debugPrint utilise par défaut le contenu debugDescription et la méthode print utilise par défaut le contenu description.

0
frank