Ich muss eine statische Objctive-C-Bibliothek in meinem schnellen Projekt verwenden. Alles andere geht gut, aber die NS_OPTIONS Enum definiert in der ObjC-C-Header-Datei, wie folgt aus:swift, wie ns_options in Obj-C-Klasse definiert
#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
und dann in der .swift Datei, wie könnte ich diese Enum in switch-case?
EDIT: ich myoption in meiner schnellen Klasse verwenden:
let option1:MyOption = .Top
let option2:MyOption = .Bottom
let value = option1 & option2
dann bekomme ich Fehler kompilieren:
Binary operator '&' cannot be applied to two MyOption operands
Wie dieses Problem zu lösen?
Hallo, rob, das weiß ich, aber was, wenn ich myoption in switch-case verwenden? "case.Top" verursacht Kompilierungsfehler: Enum case "Top" nicht im Typ MyOption gefunden – SomnusLee
Die Verwendung in einem switch-case ist nicht sinnvoll, da der 'MyOption'-Wert mehrere Optionen enthalten kann, z. Es könnte sowohl ".Top" als auch ".Bottom" enthalten, also müssten mehrere Fälle übereinstimmen und eine Swift-Switch-Anweisung kann das nicht tun. Sie sollten 'if options.contains (.Top) {...} verwenden, wenn options.contains (.Bottom) {...}'. –
Okay, ich sehe ~ Thx – SomnusLee