如何快速使用完成块?
Posted
技术标签:
【中文标题】如何快速使用完成块?【英文标题】:How do I use a completionBlock in swift? 【发布时间】:2014-07-04 01:34:47 【问题描述】:我正在尝试使用 swift 的 SKStoreProductViewController,但我的语法出现错误,特别是我的完成块。
这是我的代码:
let storeViewController:SKStoreProductViewController = SKStoreProductViewController();
storeViewController.delegate = self;
var productparameters = [SKStoreProductParameterITunesItemIdentifier:someitunesid];
storeViewController.loadProductWithParameters(productparameters,
(success: Bool!, error: NSError!) -> Void in
if success
self.presentViewController(storeViewController, animated: true, completion: nil);
else
NSLog("%@", error)
)
运行此程序后,error:NSError!),-> Void
之间出现 expected "," separator
错误
这对我来说没有意义,因为苹果文档要求:
func loadProductWithParameters(_ parameters: [NSObject : AnyObject]!,
completionBlock block: ((Bool, NSError!) -> Void)!)
我做错了什么?
【问题讨论】:
【参考方案1】:你已经完成了 99%,你只需要在你的块周围加上大括号就可以有正确的闭包语法:
storeViewController.loadProductWithParameters(productparameters, (success: Bool!, error: NSError!) -> Void in
if success
self.presentViewController(storeViewController, animated: true, completion: nil);
else
NSLog("%@", error)
)
您可以阅读more about closures in Apple's documentation。
【讨论】:
以上是关于如何快速使用完成块?的主要内容,如果未能解决你的问题,请参考以下文章