Переключить оператор для импортированных NS_OPTIONS (RawOptionSetType) в Swift?
Оператор switch в Swift гораздо более выразителен. Мне интересно, возможно ли это:
Давайте посмотрим на UIViewAutoresizing, например. Это определено в Objective-C следующим образом:
typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
Я могу использовать его в Swift как enum:
let foo = UIViewAutoresizing([.FlexibleHeight, .FlexibleTopMargin])
Можно ли использовать оператор switch вместо нескольких операторов if?
if foo & UIViewAutoresizing.FlexibleHeight != nil {
}
if foo & UIViewAutoresizing.FlexibleWidth != nil {
}
if foo & UIViewAutoresizing.FlexibleTopMargin != nil {
}
Примерно такой псевдокод:
switch foo { // ** THIS IS PSEUDO CODE AND WILL NOT COMPILE **
case & .FlexibleHeight:
println("height")
case & .FlexibleWidth:
println("width")
case & .FlexibleTop:
println("top")
}