Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了可可触摸 – 在swift中获取类名的用户可读版本(在objc NSStringFromClass中)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

Swift中有相当于NSStringFromClass的类别,可以提供类名的用户可读版本吗?我尝试使用我创建的本机Swift类,但是您可以看到,结果似乎是编译器的类名的内部表示形式: println(NSStringFromClass(MyClass.self)) 结果: _TtC5test7MyClass 我已经尝试将@objc属性添加到该类,并使其成为NSObject的子类,但没有任何区别。我
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!
    }
}

大佬总结

以上是大佬教程为你收集整理的可可触摸 – 在swift中获取类名的用户可读版本(在objc NSStringFromClass中)全部内容,希望文章能够帮你解决可可触摸 – 在swift中获取类名的用户可读版本(在objc NSStringFromClass中)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。