Fork me on GitHub

Swift4.0中使用NSClassFromString()

如果我们需要在项目中需要使用NSClassFromString()方法来获取一个Swift语言写的类。那么直接按照原来OC的方式来写:

1
let cls = NSClassFromString(className)!

编译器是不会报错的,不过运行的时候就懵逼了,cls是空的。

Swift跟OC的差别还是蛮大的,由字符串转为类型的时候 如果类型是自定义的 需要在类型字符串前边加上你的项目的名字!(个人认为应该是Target名)

正确写法:

1
2
3
4
5
// 拼接类名字
let className = "xxx." + "your className" // xxx替换为你的Xcode工程里对应Target的名字,而且中间还要加一点 "."

// 然后使用NSClassFromString()获取Class
let cls = NSClassFromString(className)!

同理,在OC中调用NSClassFromString()方法获取Swift语言写的类,也需要用在类名前加上工程名(个人认为应该是Target名)和路径连接符 “.” 。

------------- 本文结束感谢您的阅读 -------------