首页 > 编程语言 > 详细

[swift] NSClassFromString 无法获得该类

时间:2015-10-12 10:38:06      阅读:208      评论:0      收藏:0      [点我收藏+]

在写OC的时候需要用 NSClassFromString(classStringName)获得一个类,如果存在就用这个类型来声明一个对象,

但是在swift的时候却往往得不到这个类,为什么呢?

从截图看

技术分享

分析swift里面的对象还有该工程的名字CFBundleName

所以我们可以分析出只要加上该工程的名字就可以得到这个类了写法如下

extension NSObject {
    // create a static method to get a swift class for a string name
    class func swiftClassFromString(className: String) -> AnyClass! {
        // get the project name
        if  let appName: String? = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName") as! String? {
            // generate the full name of your class (take a look into your "YourProject-swift.h" file)
            let classStringName = appName! + "." + className
            // return the class!
            return NSClassFromString(classStringName)
        }
        return nil;
    }
}

而如果不想这样做呢

还有一种方法

 

技术分享

就是在该类声明的时候加上@objc修饰符

置于为什么需要objc,参考前一篇《Swift与Objective-C的兼容“黑魔法”:@objc和Dynamic

 

[swift] NSClassFromString 无法获得该类

原文:http://www.cnblogs.com/nonato/p/4870817.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!