Java 中想自定义 Log 中的类的输出格式,override toString 方法即可
而 Swift 中需要继承特定的协议 CustomStringConvertible
例如
extension DataResponse: CustomStringConvertible, CustomDebugStringConvertible {
/// The textual representation used when written to an output stream, which includes whether the result was a
/// success or failure.
public var description: String {
return result.debugDescription
}
/// The debug textual representation used when written to an output stream, which includes the URL request, the URL
/// response, the server data, the response serialization result and the timeline.
public var debugDescription: String {
let requestDescription = request.map { "\($0.httpMethod ?? "GET") \($0)"} ?? "nil"
let requestBody = request?.httpBody.map { String(decoding: $0, as: UTF8.self) } ?? "None"
let responseDescription = response.map { "\($0)" } ?? "nil"
let responseBody = data.map { String(decoding: $0, as: UTF8.self) } ?? "None"
return """
[Request]: \(requestDescription)
[Request Body]: \n\(requestBody)
[Response]: \(responseDescription)
[Response Body]: \n\(responseBody)
[Result]: \(result)
[Timeline]: \(timeline.debugDescription)
"""
}
}