我从ObjC得到了这段代码。我想将其转换为斯威夫特,但是,我有这样的困难......如何使枚举开关case(swift)
ObjC代码:
navgivet.h
typedef NS_ENUM(NSInteger, BB3Photo) {
kirkenType = 10 ,
festenType = 20 ,
praestType = 30
};
@property (nonatomic, assign) BB3Photo selectedPhotoType;
navgivet.m
- (IBAction)changeImage:(id)sender {
if ([sender isKindOfClass:[UIButton class]]) {
UIButton *button = sender;
_selectedPhotoType = button.tag;
}
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"Vælg Billed"
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:@"Vælg fra Biblioteket", @"Vælg Kamera", nil];
sheet.actionSheetStyle = UIActionSheetStyleDefault;
[sheet showInView:[self.view window]];
}
switch (_selectedPhotoType) {
case kirkenType: {
}break;
case festenType: {
}break;
case praestType: {
}break;
default:
break;
这里是我的SWIFT代码在此尝试
enum BBPhoto1: Int {
case kommunen = 10
case sagsbehandler = 20
case festen = 30
}
@IBAction func changeImage(sender: AnyObject){
if sender .isKindOfClass(UIButton){
let button: UIButton = sender as UIButton
selectedPhoto = BBPhoto1.fromRaw(button.tag)
}
let actionSheet = UIActionSheet(title: "Billeder", delegate: self, cancelButtonTitle: nil, destructiveButtonTitle: nil, otherButtonTitles: "Vælg fra Biblioteket", "Vælg Kamera")
actionSheet.showInView(self.view)
}
var selectedPhoto: BBPhoto1?
switch (selectedPhoto) {
case kommunen {
}
case sagsbehandler{
}
}
,但我得到的错误:与同messege但Sagsbehandler‘未解决的标识符kommunen的使用’。
如何让它工作?
嗯,不知道我理解为什么富人是在一个if语句... ,但我很欣赏的答案,并会接受它 – KennyVB 2014-10-04 08:14:49
调用'fromRaw'返回一个可选的值,因为你传递的原始价值可能不是一个有效的价值。那样的话,你会收到'nil'。这就是为什么你必须声明'selectedPhoto'是可选的。要使用'switch'中的值,你必须打开可选值。在这里,@Antonio使用了可选的绑定语法'if let'。如果它不是'nil',则将非可选值绑定到变量。如果你向'fromRaw'传递了一个错误的值,并且你的'selectedValue'为零,那么'if let'后面的块将不会被输入。 – vacawama 2014-10-04 08:58:18
谢谢@vacawama以这样一种清晰的方式解释:) – Antonio 2014-10-04 10:09:27