Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Swift中Obj-C类中定义的NS_选项_Swift - Fatal编程技术网

如何使用Swift中Obj-C类中定义的NS_选项

如何使用Swift中Obj-C类中定义的NS_选项,swift,Swift,我必须在Swift项目中使用Objective-C静态库。除了Objective-C头文件中定义的NS_选项enum之外,其他一切都进行得很顺利,如下所示: #import <Foundation/Foundation.h> typedef NS_OPTIONS(NSUInteger, MyOption) { MyOptionNone = 0, MyOptionTop = 1 << 0, MyOptionLeft = 1 <&

我必须在Swift项目中使用Objective-C静态库。除了Objective-C头文件中定义的
NS_选项
enum之外,其他一切都进行得很顺利,如下所示:

#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
然后我得到编译错误:

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
};
typedef NS_选项(NSUInteger,MyOption){
MyOptionNone=0,

MyOptionTop=1首先,您需要修复语法。右大括号后需要一个分号:

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

MyOptionTop=1嗨,rob,我知道这一点,但是如果我想在switch case中使用MyOption呢?“case.Top”将导致编译错误:枚举case“Top”在类型MyOption中找不到在切换情况下使用它是没有意义的,因为
MyOption
值可能包含多个选项,例如,它可能同时包含
.Top
.Bottom
,因此它需要匹配多个情况,而Swift switch语句不能这样做。如果选项.contains(.Top),则应使用
{…}if options.contains(.Bottom){…}
.Hi~我遇到了另一个问题。你能帮我吗?嗨,rob,我知道这一点,但如果我想在开关大小写中使用MyOption怎么办?“case.Top”将导致编译错误:枚举大小写“Top”在类型MyOption中找不到在切换情况下使用它是没有意义的,因为
MyOption
值可能包含多个选项,例如,它可能同时包含
.Top
.Bottom
,因此它需要匹配多个情况,而Swift switch语句不能这样做。如果选项.contains(.Top),则应使用
{…}如果options.contains(.Bottom){…}
.Hi~我遇到了另一个问题。你能帮我吗?