2014-09-02 81 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