我是XCode的新手。我想将Objective-c代码转换为Swift等效代码。
ActionStringDoneBlock done = ^(ActionSheetStringPicker *picker, NSInteger selectedIndex, id selectedValue) {
if ([sender respondsToSelector:@selector(setText:)]) {
[sender performSelector:@selector(setText:) withObject:selectedValue];
}
};
以下是我的努力,但是(id selectedValue)和sender.performSelector(" setText:",withObject:selectedValue)有错误
let done: ActionStringDoneBlock = {(picker: ActionSheetStringPicker!, selectedIndex: NSInteger!, selectedValue : AnyObject) in
if(sender.respondsToSelector("setText:"))
{
sender.performSelector("setText:", withObject: selectedValue)
}
}
我该如何解决这个问题?提前致谢。
答案 0 :(得分:0)
在Swift中,只要您的delegate
(a.k.a。sender
)是@objc class
,您就可以利用optional chaining:
sender.setText?(selectedValue)
注意:您无法在Swift中使用performSelector...
方法或NSInvocation
类。