Swift 如何获取当前代码的函数名和行号

#file 用于获取当前文件文件名
#line 用于获取当前行号
#column 用于获取当前列编号
#function 用于获取当前函数名

写一个调试输出日志的方法:

func printLog(_ items: Any..., separator: String = " ", terminator: String = "\n", file: String = #file, funcName: String = #function, line: Int = #line) {
    #if DEBUG || UAT
        let fileName = (file as NSString).lastPathComponent
        let output = items.map { "\($0)" }.joined(separator: separator)
        let dateString = StringFormatterUtils.dateToString(Date(), dateFormat: "yyyy/MM/dd HH:mm:ss")
        Swift.print("[\(dateString)][\(fileName)][\(funcName)][Line-\(line)] \(output)", terminator: terminator)
    #endif
}

工具类StringFormatterUtils

struct StringFormatterUtils {
    static func stringToDate(_ string: String, dateFormat: String = "yyyyMMdd") -> Date? {
        let formatter = DateFormatter()
        formatter.locale = Locale(identifier: "en_US_POSIX")
        formatter.timeZone = TimeZone(identifier: "Asia/Tokyo")
        formatter.dateFormat = dateFormat
        let date = formatter.date(from: string)
        return date
    }

    static func dateToString(_ date: Date, dateFormat: String = "yyyy/MM/dd") -> String {
        let formatter = DateFormatter()
        formatter.locale = Locale(identifier: "en_US_POSIX")
        formatter.timeZone = TimeZone(identifier: "Asia/Tokyo")
        formatter.dateFormat = dateFormat
        let date = formatter.string(from: date)
        return date
    }

    static func stringToDateString(_ string: String, fromFormat: String = "yyyyMMdd", toFormat: String = "yyyy/MM/dd") -> String {
        let fromFormatter = DateFormatter()
        fromFormatter.locale = Locale(identifier: "en_US_POSIX")
        fromFormatter.timeZone = TimeZone(identifier: "Asia/Tokyo")
        fromFormatter.dateFormat = fromFormat
        let date = fromFormatter.date(from: string)

        let toFormatter = DateFormatter()
        toFormatter.locale = Locale(identifier: "en_US_POSIX")
        toFormatter.timeZone = TimeZone(identifier: "Asia/Tokyo")
        toFormatter.dateFormat = toFormat

        let dateStr = toFormatter.string(from: date ?? Date())
        return dateStr
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容