您的位置:首页 > 移动开发 > Swift

swift之classfromString

2016-06-15 17:31 387 查看
在oc中大家都知道,使用classFromString可以很轻松的根据一个类的名称来获取一个类。但是在swift中再使用calssFromString来获取一个类名时,却却只能得到一个nil!!这到底是为什么呢?

经过本人的各方面努力终于找到了答案!!在此和大家分享一下!并不是上面的方法废弃掉了,而是swift的类名规范和oc的有了区别:

1. swift中使用classFromString时要在类名前面加上项目app名称:


获取appName的方法:


注意以上获取的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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift class