swift之classfromString

在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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值