繁体   English   中英

Swift中正确的块语法是什么

[英]What is the correct block syntax in Swift

所以我在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
}

如果块签名是

void (^PHBridgeSearchCompletionHandler) (NSDictionary *)

然后闭包应该是这样的:

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

但是如果你知道字典包含相同类型的对象,让我们说Int ,并且键类型是String ,那么你也可以把它写成

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

由您决定是否可选,具体取决于您的使用方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM