如何在 Swift 上打印类名? [复制]

Posted

技术标签:

【中文标题】如何在 Swift 上打印类名? [复制]【英文标题】:How can I print class name on Swift? [duplicate] 【发布时间】:2014-08-24 20:51:12 【问题描述】:

在 Swift 中,我们不能再使用“self.class”。

我想为 NSObject 的子类中的描述方法打印自己的类名。

如何打印?或者我应该创建获取类名的新方法?

我检查了以下问题,但没有得到答案。

How do I print the type or class of a variable in Swift?

How do you find out the type of an object (in Swift)?

import UIKit

class PrintClassName: NSObject 
    override init() 
        super.init()
        println("\(self.dynamicType)")
        // Prints "(Metatype)"

        println("\(object_getClassName(self))");
        // Prints "0x7b680910 (Pointer)"

        println("\(self.className)")
        // Compile error!

        println(PrintClassName.self)
        // Prints "(Metatype)"
    

 

2014.08.25 后记

我检查了问题。

Swift class introspection & generics

println(PrintClassName.self) 打印“(元类型)”

而且我想得到类名而不在源代码上写类名。

【问题讨论】:

虽然它没有回答你的问题,但奇怪的是,在创建 OSX 应用程序时,className 属性在 Swift 中有效。它被添加为 NSObject 的扩展。无论出于何种原因,该扩展都不适用于 ios 的 NSObject 版本。也许这只是一个错误。 您使用的是 Beta 6 吗? self.className 应该给出你想要的,因为你继承了 NSObject。或者使用 reflect(self).summary. @Mallioch self.className 返回错误“'PrintClassName' 没有名为 'className' 的成员”...好的,我知道这是一个错误 @vladof 是的,我正在使用 XCode6 beta6。但是 self.className 返回错误。但是 reflect(self).summary 返回 ProjectName.ClassName !!谢谢! 你可能正在寻找这个***.com/a/25345480/2866371 【参考方案1】:
import Foundation

class PrintClassName : NSObject 
    override init() 
        super.init()
        println(NSStringFromClass(self.dynamicType))
    

【讨论】:

哦!它返回 ProjectName.ClassName!!谢谢! 您也可以使用 - self.className.componentsSeparatedByString(".").last! - 分隔你的班级名称

以上是关于如何在 Swift 上打印类名? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何打印对象? [复制]

如何在 Swift 4 中的浮点数后打印 5 位数字,有没有最短的方法? [复制]

如何在 Swift 4 中的浮点数后打印 5 位数字,有没有最短的方法? [复制]

如何在 Swift 中静音“从不变异”的警告? [复制]

如何使用 Swift 在 Firebase 中使用 equalTo 查询查找子节点? [复制]

如何在 Swift 中获取父 ViewController 的类名?