当前位置: 首页 > 知识库问答 >
问题:

在Swift中打印当前文件的类名称

融修平
2023-03-14

我试图在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]

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

共有3个答案

苗康平
2023-03-14

我的简短回答是,

print(" Function name : \(#function), Class Name : \(self.dynamicType), File Path : \(#file)")
谭奕
2023-03-14

我想要一个解决方案,它可以注销一个漂亮整洁的字符串,比如(Swift 3.0)——类名——函数名。如:

OnboardingGetStartedController-视图加载()

所以我最终得到了一个简短的函数,我把它放在了我的utils类中,像这样:

class func logCurrentFunc(fileStr: String, funcStr: String) {

    var fileName = fileStr.components(separatedBy: "/").last ?? ""
    fileName = fileName.components(separatedBy:".").first ?? ""
    let printFunc = "\(fileName) - \(funcStr)"
    print(printFunc)
}

我在应用程序的任何地方都这样称呼它:

Utils.logCurrentFunc(#file, funcStr: #function)

它只是比其他建议更整洁。

倪振海
2023-03-14

因此,您的问题只是所示字符串的长路径。我最好的办法是将字符串缩短为文件名。

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中,这些旧标识符被弃用并替换为#file#line#column、和#function

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

输出示例:

file81.swift
 类似资料:
  • 在Swift中,我们不能再使用“self.class”。 我想为NSObject的子类中的描述方法打印自己的类名。 我如何打印它?或者我应该为获得类名做新的方法? 我检查了下面的问题,但是我没有得到答案。 如何在Swift中打印变量的类型或类别? 你如何(在Swift中)找出一个物体的类型?   2014.08.25附言 我检查了这个问题。 快速课堂反思 但是prints”(元类型) 我想在源代码

  • 本文向大家介绍realm 打印文件位置-Swift,包括了realm 打印文件位置-Swift的使用技巧和注意事项,需要的朋友参考一下 示例 将以下行添加到ViewDidLoad方法: 上面的行会将位置打印到Xcode的控制台。复制文件路径,转到Finder →转到→转到文件夹...(或⌘+⇧+ G)→粘贴路径并单击转到。

  • 我正在开发一个Jenkins插件,但我有几个问题,我认为可能是由于插件的类路径中丢失了一个jar,尽管它在插件的WEB-INF/lib目录中。 通常,我会在Java中使用以下代码来打印类路径,但这似乎不适用于Jenkins。 当我执行插件时,上面的代码会导致一个异常与消息 打印Jenkins插件使用的类路径的最佳方式是什么?

  • 问题内容: 有没有一种方法可以快速打印变量的运行时类型?例如: 在上面的示例中,我正在寻找一种方法来表明变量“ soon”的类型为,或至少为。 问题答案: 2016年9月更新 Swift 3.0:使用,例如(因为关键字已删除) 2015年10月更新 : 我将下面的示例更新为新的Swift 2.0语法(例如,已被替换为,现在是)。 从Xcode 6.3发行说明 : @nschum在注释中指出Xcod

  • 问题内容: 有没有一种方法可以使用JSTL或Struts(或不使用)获得当前呈现的JSP?像Python和PHP中的_文件_一样? 问题答案: 好吧…是的…某种程度上 我正在使用一个名为JSP的名称,该名称包含在我的Web应用程序中每个JSP的顶部: 另外,我将其放在每个JSP的末尾: 那给了我一个日志。为了确保每个JSP都是“正确的”,我在构建脚本中进行了检查,该脚本仅查找两个字符串和“ END

  • 问题内容: 我有一个很长的文件要打印,但是例如跳过前1,000,000行。我查看了cat手册页,但是没有看到任何选择。我正在寻找执行此操作的命令或简单的Bash程序。 问题答案: 你需要尾巴。一些例子: 如果您确实需要跳过特定数量的“第一行”,请使用 即,如果要跳过N行,则开始打印N + 1行。例: 如果只想看最后几行,请省略“ +”号: