天哪,我一生都无法工作。

  • 我在Objective-C中有一个typdef,看起来像这样:

  • typedef void (^StringBlock)(NSString * string);
    
  • 我有一个Objective-c类,该类具有一个属性,该属性使您可以存储自己的StringBlock类型的块。该属性在Objective-C中声明为:

  • @property (nonatomic, copy) StringBlock onTextSubmitBlock;
    
  • 在Objective-c中为其分配一个块,如下所示:

  • input.onTextSubmitBlock = ^(NSString * text) {
    
    };
    
  • 我想在Swift类中做同样的事情!我最接近的东西是这样的:

  • input!.onTextSubmitBlock = {(StringBlock) in
    
    }
    

    可以编译,但是我无法访问所需的参数(objective-c中的(NSString * text) ...)

    我敢肯定,一旦我习惯了Swift,这会很明显,但是我想念的是什么?

    最佳答案

    你很亲密您应该能够像这样使用它:

    input!.onTextSubmitBlock = { text in
        println(text)
    }
    

    Swift将从声明中推断textNSString。 Thera是您也可以声明这两种方法。像这样:
    input!.onTextSubmitBlock = {
        println($0) // $0 is text
    }
    

    还有这个:
    input!.onTextSubmitBlock = { (text: NSString) -> () in
        println(text)
    }
    

    10-08 17:38