¿Cambiar la instrucción para NS_OPTIONS (RawOptionSetType) importadas en Swift?
La declaración de cambio en Swift es mucho más expresiva. Me pregunto si esto podría ser posible:
Veamos UIViewAutoresizing por ejemplo. Se define en Objective-C de la siguiente manera:
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
};
Puedo usarlo en Swift como una enumeración:
let foo = UIViewAutoresizing([.FlexibleHeight, .FlexibleTopMargin])
¿Es posible usar una instrucción switch en lugar de varias instrucciones if?
if foo & UIViewAutoresizing.FlexibleHeight != nil {
}
if foo & UIViewAutoresizing.FlexibleWidth != nil {
}
if foo & UIViewAutoresizing.FlexibleTopMargin != nil {
}
Algo así como este pseudocódigo:
switch foo { // ** THIS IS PSEUDO CODE AND WILL NOT COMPILE **
case & .FlexibleHeight:
println("height")
case & .FlexibleWidth:
println("width")
case & .FlexibleTop:
println("top")
}