1、要想在oc 类中调用 Swift的类
首先要在 pch文件中添加Swift的关联
其次,就是代码调用了。在oc代码中,我用的是反射机制。
NSString *className = @"ViewController";
NSString * aName = [NSBundle mainBundle].spaceName;// spaceName
className = [NSString stringWithFormat:@"%@.%@",aName,className];
UIViewController *Vc = [[NSClassFromString(className) alloc] init];
[appDelegate.mainNavigationController pushViewController:Vc animated:NO];
/// 获取项目名(命名空间)
extension Bundle {
var spaceName: String {
return infoDictionary?["CFBundleName"] as? String ?? ""
}
}
2、在Swift中调用oc的方法,需要添加 一个桥接文件,其实就是创建一个头文件,怎么创建这里就不细说了,有一点需要注意,更改路径如图二。
进入TARGETS ->Build Settings -> Packaging 中
创建桥接文件相关资料:http://www.jianshu.com/p/7c941d274f5a
设置Defines Module为YES(不设置,也可以,我之前的项目也是没有设置)
设置 Product Module Name ,也可以不设置,默认为工程的名字。这个在后面会用到
命名规则:项目名+“-Bridging-Header”,一般放在根目录下,如图一:
其次,在桥接文件中 导入 你需要使用的 oc头文件。
最后,用点语法,类名.方法。就可以了。
AppUtils.clearAllData() // AppUtils是类名,clearAllData是方法名