2014-09-02 77 views
0

我是Xcode的新手。我想将下面的Objective-C代码转换成Swift等效。Swift等效的目标c代码ActionStringDoneBlock

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

你可能需要看看_optional chaining_这里:https://developer.apple.com/library/prerelease/mac/documentation/Swift/Conceptual/Swift_Programming_Language/OptionalChaining.html,这将有助于你理解如何将_Objc_这样的片段转换为_Swift_。 – holex 2014-09-02 09:26:29

回答

0

在斯威夫特,你可以采取的optional chaining优势,只要你delegate(又名sender)是@objc class

sender.setText?(selectedValue) 

注:不能使用performSelector...方法或斯威夫特NSInvocation类。

+0

谢谢你的回答... selectedValue总是零...我不知道为什么它是零...可以指导 – kaneyip 2014-09-02 10:57:01