【问题标题】:Swift equivalent objective c code ActionStringDoneBlockSwift 等效目标 c 代码 ActionStringDoneBlock
【发布时间】:2014-09-02 09:04:32
【问题描述】:

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

    }

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

【问题讨论】:

标签: objective-c delegates swift


【解决方案1】:

在 Swift 中,您可以利用optional chaining,只要您的delegate(又名sender)是@objc class

sender.setText?(selectedValue)

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

【讨论】:

  • 感谢您的回答... selectedValue 始终为零...我不知道为什么它是零...可以指导
猜你喜欢
  • 1970-01-01
  • 2015-10-05
  • 2013-03-20
  • 2014-03-21
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
  • 2011-03-10
  • 2015-03-26
相关资源
最近更新 更多