ios – 打印Swift中当前文件的类名

我试图在Swift中打印当前课程的名称.更具体地说,我想实现以下输出:

myFunction() in ClassContainingTheFunction

我的功能名称打印正常.这是我打印类名最接近的函数名称:

println("\(__FUNCTION__) in \(__FILE__)") 

版画

myFunction() in path/to/TheFile.swift

 println("\(__FUNCTION__) in \(object_getClassName(self))")

版画

 myFunction() in [mangled class name here]

这两个都是接近于我想要的,但路径很长,与我在代码中看到的名称相比,这个被破坏的类名可能非常不可读.

所以你的问题只是显示String的长路径.
我最好的想法是将String缩短到文件名.

var test: String = "/Users/user/Project/classfile.m"

test = test.lastPathComponent // here it is only classfile.m
test = test.stringByDeletingPathExtension // here it is only classfile

由于object_getClassNAme(…)将使用真正使用的类,而不是您使用的类与类集群一样,这是错误的方式.学习具体的类实现名称会使其更容易.

而不是测试你使用你的方式获取文件名,如__FILE__.以下代码生成您要查找的输出:

println("\(__FUNCTION__) in \(__FILE__.lastPathComponent.stringByDeletingPathExtension)") 

Swift 2.2

在Swift 2.2中,旧的标识符已被弃用,并替换为#file,#line,#column和#function.

print("\(#function) in \(#file.components(separatedBy: "/").last ?? "")")

输出示例:

file81.swift
翻译自:https://stackoverflow.com/questions/24495039/print-class-name-of-current-file-in-swift

转载注明原文:ios – 打印Swift中当前文件的类名