Swift等效目标c代码ActionStringDoneBlock

时间:2014-09-02 09:04:32

标签: objective-c delegates swift

我是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)
        }

    }

我该如何解决这个问题?提前致谢。

1 个答案:

答案 0 :(得分:0)

在Swift中,只要您的delegate(a.k.a。sender)是@objc class,您就可以利用optional chaining

sender.setText?(selectedValue)

注意:您无法在Swift中使用performSelector...方法或NSInvocation类。