print() против debugPrint() в swift

Это может быть простой вопрос, но из-за четкого понимания между print() и debug() print in swift, я не могу понять, где использовать каждый из них.

5 ответов

Решение

Вы используете debugPrint, когда хотите получить больше информации о том, что выводится на консоль. Дополнительная информация обычно полезна для отладки.

print () - записывает текстовые представления заданных элементов в стандартный вывод.

debugPrint () - записывает текстовые представления заданных элементов, наиболее подходящих для отладки, в стандартный вывод.

По существу, debugPrint добавляет дополнительную информацию, которая полезна для отладки, такую ​​как информация о типе и т. Д.

Пример:

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


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

С помощью print() это обычный способ визуально увидеть, что вы создаете. Он не отображает "нерелевантную" информацию, которая не обязательна для представления печатной переменной.

например

print("test")
// prints: test

С помощью debugPrint() однако добавляет выведенный тип к выводу.

например

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

Обратите внимание, как он добавляет кавычки, чтобы вы знали, что это строка.

Эрика Садун создала прекрасный пример того, как эти две функции отличаются: Swift: регистрация

Ссылка на статью: print-vs-debugprint

Если вы делаете сетевой звонок и делаете debugPrint(response) вместо print(response), вы получите гораздо больше ценной информации. Смотрите приведенный ниже пример кода:

Пример кода: использование API поиска iTunes

    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)
    }

Вывод на консоль (удаление некоторых полей ответа)

Для печати

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

Для 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
}

Если вы оба реализации CustomDebugStringConvertible а также CustomStringConvertible протокол, то debugPrint использование метода по умолчанию debugDescription содержание и print использование метода по умолчанию description содержание.

debugPrint() Записывает текстовые представления данных элементов, наиболее подходящие для отладки, в стандартный вывод, и он состоит из нескольких параметров:

      func debugPrint(_ items: Any..., separator: String = " ", terminator: String = "\n")

элементы : может включать ноль или более элементов для печати.

разделитель : строка для печати между каждым элементом. По умолчанию используется один пробел ("").

терминатор : строка для печати после того, как все элементы будут напечатаны. По умолчанию это новая строка ("\ n").

Я написал несколько примеров ниже для большего понимания:

      debugPrint("One two three four five")
// Prints "One two three four five"

debugPrint(1...5)
// Prints "ClosedRange(1...5)"

debugPrint(1.0, 2.0, 3.0, 4.0, 5.0)
// Prints "1.0 2.0 3.0 4.0 5.0"

Чтобы напечатать элементы, разделенные чем-то другим, кроме пробела, передайте строку в качестве разделителя.

      debugPrint(1.0, 2.0, 3.0, 4.0, 5.0, separator: " ... ")
// Prints "1.0 ... 2.0 ... 3.0 ... 4.0 ... 5.0"

Вывод каждого вызова debugPrint(_: separator: terminator:) по умолчанию включает новую строку. Чтобы напечатать элементы без символа новой строки в конце, передайте пустую строку как терминатор или передайте любые другие вещи, которые вы хотите.

      for n in 1...5 {
    debugPrint(n, terminator: "")
}
// Prints "12345"
Другие вопросы по тегам