gpt4 book ai didi

swift - 如何在 Swift 中使用 Obj-C 类中定义的 NS_OPTIONS

转载 作者:行者123 更新时间:2023-12-01 17:20:15 25 4
gpt4 key购买 nike

我必须在我的 Swift 项目中使用 Objective-C 静态库。除了在 Objective-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

然后在 .swift 文件中,我如何在 switch-case 中使用这个枚举?

编辑:我在 Swift 类中使用 MyOption:

let option1: MyOption = .Top
let option2: MyOption = .Bottom
let value = option1 & option2

然后我得到编译错误:

Binary operator '&' cannot be applied to two `MyOption` operands

如何解决这个问题?

最佳答案

首先,您需要修正语法。右大括号后需要一个分号:

typedef NS_OPTIONS(NSUInteger, MyOption) {
MyOptionNone = 0,
MyOptionTop = 1 << 0,
MyOptionLeft = 1 << 1,
MyOptionBottom = 1 << 2,
MyOptionRight = 1 << 3
};

接下来,在您的桥接 header 中,您需要导入定义MyOption 的 header 文件。 .当您第一次为 Objective-C 项目创建 Swift 源文件时,或者当您第一次在 Swift 项目中创建 Objective-C 源文件时,Xcode 会为您创建桥接 header 。它被命名为 <i>ProjectName</i>-Bridging-Header.h .例如:

bridging header

完成此操作后,两个头文件都可以无错编译,您可以使用 MyOption来自 swift 。这是一个OptionSetType .示例:

MyOption usage

关于swift - 如何在 Swift 中使用 Obj-C 类中定义的 NS_OPTIONS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36439824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com