Swift中正确的块语法是什么

时间:2014-08-25 07:53:33

标签: objective-c syntax swift block

所以我在Swift中重写了一些Obj-C代码,偶然发现了一个让我疯狂的块。 我已经看过apple和其他一些资源提供的文件在stackoverflow上。不幸的是,我找不到解决方案了。我得到了那些我想在Swift中重写的obj-c代码。也许你可以帮我弄清楚如何做到这一点。我真的很感激!

- (void)startSearchWithCompletionHandler:(PHBridgeSearchCompletionHandler)completionHandler;

并像这样调用:

[self.bridgeSearch startSearchWithCompletionHandler:^(NSDictionary *bridgesFound) { ...

到目前为止,我提出了这个问题:

var bridgeSearching : PHBridgeSearching = ...

bridgeSearching.startSearchWithCompletionHandler { (bridgesFound: AnyObject!) -> PHBridgeSearchCompletionHandler in
}

1 个答案:

答案 0 :(得分:0)

如果块签名是

void (^PHBridgeSearchCompletionHandler) (NSDictionary *)

那么闭包应该是这样的:

{ (bridgesFound: NSDictionary?) -> () in
    ...
}

但如果您知道字典包含相同类型的对象,请说出Int,密钥类型为String,那么您也可以将其写为

{ (bridgesFound: [String:Int]) -> () in
    ...
}

根据您的使用方式,决定是否选择它。