Swift中有相当于NsstringFromClass的类别,可以提供类名的用户可读版本吗?我尝试使用我创建的本机Swift类,但是您可以看到,结果似乎是编译器的类名的内部表示形式:
println(NsstringFromClass(MyClass.self))
结果:
_TtC5test7MyClass
我已经尝试将@objc属性添加到该类,并使其成为NSObject的子类,但没有任何区别。我发现如果我用一个相同名称的Objective-C类替换MyClass,并在桥接头中导入它,它会给我’MyClass’,但这不是必要的。
另一个选择是为此制定协议,我想以这种方式使用的每个类必须符合:
protocol Nameable { class var className: String { get } }
但是,使用内置的方式来实现这一点更容易。
基于xcode 6 beta 5的新格式。
(project_name)。(class_name)
func getName(classtype:AnyClass) -> String { let classstring = NsstringFromClass(classtype.self) let range = classstring.rangeOfString(".",options: NsstringCompareOptions.CaseInsensitiveSearch,range: Range<String.Index>(start:classstring.startIndex,end: classstring.endindex),locale: nil) return classstring.substringFromIndex(range!.endindex) }
最新6.3 Xcode Swift 1.2
如果您需要扩展名,或者您可以将其放在任何通用对象上:
public extension NSObject{ public class var nameOfClass: String{ return NsstringFromClass(self).componentsSeparatedByString(".").last! } public var nameOfClass: String{ return NsstringFromClass(self.dynamicType).componentsSeparatedByString(".").last! } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。