在OC和Swift混编的过程中有很多的细节需要注意。
今天介绍一下在OC文件中声明了一个枚举类型,如何在Swift文件中调用该枚举类型的值。
1.项目工程构建的时候选的是Swift语言,项目名称TestProject。
2.建立一个Swift文件SwiftTestFile.swift 和一个OC的文件 ObjectTestFile.h 和ObjectTestFile.m。
在ObjectTestFile.h 中声明一个枚举类型:
typedef NS_ENUM(NSInteger, YXLabelStyle) {
YXLabelStyleSingle1_1,
YXLabelStyleSingle1_2,
YXLabelStyleSingle1_3,
}
首先必须确认的是枚举的每个值必须是枚举的“名字+后缀”的形式,这是一种规范,不这样在Swift文件中会导致调用不到。
也就是例子中枚举名为“YXLabelStyle”,那么每个值必须是“YXLabelStyle+...”的形式。
3.首先想要Swift调用OC文件及内容,必须有一个桥接文件并把需要调用的OC文件的头文件引入,桥接文件的构建就不多说了,一搜一大把,我们项目中桥接文件为“Bridging-Header.h”。
桥接文件中导入头文件:
#ifndef Bridging_Header_h
#define Bridging_Header_h
#import "ObjectTestFile.h"
#endif /* Bridging_Header_h */
4.这样就可以在Swift文件中调用这个枚举类型的值。
在调用的时候直接使用“YXLabelStyle.single1_1”或者直接“.single1_1”调用即可,这就是为什么要规范的原因。
5.列子:
假设我们有一个YXLabel,自定义实例化方法需要传入该枚举类型的值来确定YXLabel的一些样式和特性,那么我么可以这样:
let label = YXLabel(style: YXLabelStyle.single1_1)
或者直接这样:
let label = YXLabel(style: .single4_1)