Это может быть простой вопрос, но из-за ясного понимания между print() и debug() print в swift я не могу понять, где их использовать.
Print() vs debugPrint() в swift
Ответ 1
Вы используете debugPrint, когда хотите получить больше информации о том, что печатается на консоли. Дополнительная информация обычно полезна для отладки.
print() - Записывает текстовые представления данных в стандартный вывод.
debugPrint() - Записывает текстовые представления данных элементов, наиболее подходящих для отладки в стандартный вывод.
В основном debugPrint добавляет дополнительную информацию, которая полезна для отладки, такой как информация о типе и т.д.
Пример:
print(1...5)
// Prints "1...5"
debugPrint(1...5)
// Prints "CountableClosedRange(1...5)"
Ответ 2
Использование print()
- это регулярный способ визуального просмотра того, что вы создаете. Он не показывает "нерелевантную" информацию, которая не обязана представлять печатную переменную.
например.
print("test")
// prints: test
Используя debugPrint()
, однако добавляет выводимый тип к выводу.
например.
debugPrint("test")
// prints: "test"
Обратите внимание, как он добавляет кавычки, чтобы вы знали, что это строка.
Эрика Садун создала прекрасный пример того, как эти две функции отличаются: Swift: ведение журнала
Ответ 3
Ссылка на статью: 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)
}
Консольный выход (удаление некоторых полей ответа)
Для печати
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
}