这可能是一个简单的问题,但是由于对 print ()和 debug () print 之间的清晰理解,我无法理解在哪里使用它们。
使用 print()是一种可视化地查看您正在创建的内容的常规方法。它不显示不需要表示打印变量的“不相关”信息。
print()
例如:。
print("test") // prints: test
然而,使用 debugPrint()将推断类型添加到输出中。
debugPrint()
debugPrint("test") // prints: "test"
注意它是如何添加引号来让您知道它是一个字符串的。
埃丽卡 · 萨顿(Erica Sadun)为这两种功能的区别提供了一个完美的例子: 斯威夫特: 伐木
当需要更多有关正在打印到控制台的内容的信息时,可以使用 degugPrint。附加信息通常对调试有用。
Print () -将给定项的文本表示写入标准输出。
将最适合调试的给定项的文本表示写入标准输出。
基本上调试打印添加额外的信息,是有用的调试类型信息等。
举个例子:
print(1...5) // Prints "1...5" debugPrint(1...5) // Prints "CountableClosedRange(1...5)"
文章链接: 打印对调试打印
如果你做一个网络调用和做一个 debugPrint(response)而不是 print(response),你会得到更多有价值的信息。 请参阅下面的示例代码:
debugPrint(response)
print(response)
示例代码 : < em > 使用 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"; } ); }
[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内容。
CustomDebugStringConvertible
CustomStringConvertible
debugPrint
debugDescription
print
description
将最适合调试的给定条目的文本表示写入标准输出,它由几个参数组成:
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"
默认情况下,每次调用 degugPrint (_: 披露者: 终结者:)的输出都包含一个换行符。若要打印不带尾部换行符的项,请将空字符串作为终止符传递,或传递所需的任何其他内容。
for n in 1...5 { debugPrint(n, terminator: "") } // Prints "12345"