web-dev-qa-db-ja.com

swiftのprint()vs debugPrint()

これは簡単な質問かもしれませんが、print()とdebug()が明確に理解されているため、Swiftでそれぞれを使用する場所を理解できません。

41

何がコンソールに出力されているかについての詳細情報が必要な場合は、debugPrintを使用します。通常、追加情報はデバッグに役立ちます。

print() -指定されたアイテムのテキスト表現を標準出力に書き込みます。

debugPrint() -デバッグに最適な指定されたアイテムのテキスト表現を標準出力に書き込みます。

基本的にdebugPrintは、型情報などのデバッグに役立つ追加情報を追加します。

例:

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


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

print()を使用することは、作成しているものを視覚的に見るための通常の方法です。印刷された変数を表すのに必要ではない「無関係な」情報は表示されません。

例えば.

_print("test")
// prints: test
_

ただし、debugPrint()を使用すると、推論されたタイプが出力に追加されます。

例えば.

_debugPrint("test")
// prints: "test"
_

文字列であることを知らせるために引用符を追加する方法に注意してください。

Erica Sadunは、これら2つの機能の違いを示す完璧な例を作成しました。 Swift:Logging

19
Emptyless

記事のリンク: print-vs-debugprint

ネットワーク呼び出しを行い、debugPrint(response)の代わりにprint(response)を実行すると、より多くの貴重な情報が得られます。以下のサンプルコードを参照してください。

サンプルコード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)
    }

コンソール出力(応答フィールドの一部を削除)

Forprint

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

FordebugPrint

[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
}
9
Abhishek Bedi

CustomDebugStringConvertibleCustomStringConvertibleプロトコルの両方を実装する場合、debugPrintメソッドはデフォルトでdebugDescriptionコンテンツを使用し、printメソッドはデフォルトでdescriptionコンテンツ。

1
frank