我必须在我的swift项目中使用Objctive-C静态库.其他一切顺利,但在Objc-C头文件中定义的NS_OPTIONS枚举,如下所示:
#import <Foundation/Foundation.h>
typedef NS_OPTIONS(NSUInteger, MyOption) {
MyOptionNone = 0,
MyOptionTop = 1 << 0,
MyOptionLeft = 1 << 1,
MyOptionBottom = 1 << 2,
MyOptionRight = 1 << 3
};
@interface MyObjcClass : NSObject
@end
Run Code Online (Sandbox Code Playgroud)
然后在.swift文件中,我怎么能在switch-case中使用这个枚举?
编辑:我在我的快速课程中使用MyOption:
let option1:MyOption = .Top
let option2:MyOption = .Bottom
let value = option1 & option2
Run Code Online (Sandbox Code Playgroud)
然后我得到编译错误:
Binary operator '&' cannot be applied to two MyOption operands
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
rob*_*off 10
首先,您需要修复语法.在结束括号后你需要一个分号:
typedef NS_OPTIONS(NSUInteger, MyOption) {
MyOptionNone = 0,
MyOptionTop = 1 << 0,
MyOptionLeft = 1 << 1,
MyOptionBottom = 1 << 2,
MyOptionRight = 1 << 3
};
Run Code Online (Sandbox Code Playgroud)
接下来,在桥接标头中,您需要导入定义的头文件MyOption.当您首次为Objective-C项目创建Swift源文件时,或者在Swift项目中首次创建Objective-C源文件时,Xcode会为您创建桥接头.它被命名了ProjectName-Bridging-Header.h.例如:
一旦你完成了这个,并且两个头文件都可以编译而没有错误,你可以使用MyOptionSwift.这是一个OptionSetType.例:
| 归档时间: |
|
| 查看次数: |
1732 次 |
| 最近记录: |