swift之classfromString

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/heipingguowenkong/article/details/51683986

在oc中大家都知道,使用classFromString可以很轻松的根据一个类的名称来获取一个类。但是在swift中再使用calssFromString来获取一个类名时,却却只能得到一个nil!!这到底是为什么呢?
经过本人的各方面努力终于找到了答案!!在此和大家分享一下!并不是上面的方法废弃掉了,而是swift的类名规范和oc的有了区别:
1. swift中使用classFromString时要在类名前面加上项目app名称:这里写图片描述

  1. 获取appName的方法:这里写图片描述

  2. 注意以上获取的appName是有问题的,swift中的app命名方式是这样的:myAppName_switch;但是以上方法获取的appName是这样的:myAppName switch ;所以仅此方法获取的类依然是nil!!所以要加上适当的修改:
    这里写图片描述
    最后的endName才是可以用的appName

4.接下来就可以使用classFromString了:这里写图片描述
好了就这么愉快的解决了!!!以下是完整方法^_^
希望对大家有所帮助哦!!!觉得不错可以点个赞哦!谢谢!!!
func swiftClassFromString(className: String) -> AnyClass! {
// get the project name

    if  let appName: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleName") as! String? {

        let indexStart = appName.startIndex.advancedBy(10)
        let indexEnd = appName.endIndex.advancedBy(-6)
        let subStr = appName.substringToIndex(indexStart)
        let subStr2 = appName.substringFromIndex(indexEnd)
        let endName = "\(subStr)_\(subStr2)"

        let classStringName = "\(endName).\(className)"
        // return the class!
        return NSClassFromString(classStringName)
    }
    return nil;
}

猜你喜欢

转载自blog.csdn.net/heipingguowenkong/article/details/51683986
今日推荐