如何在 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 位数字,有没有最短的方法? [复制]