可可触摸 – 在swift中获取类名的用户可读版本(在objc NSStringFromClass中)

可可触摸 – 在swift中获取类名的用户可读版本(在objc NSStringFromClass中),第1张

概述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中)所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1055308.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存