如何在swift中使用completionBlock?

问题描述:

我想利用swift的SKStoreProductViewController,但我的语法错误,特别是与我的完成块。如何在swift中使用completionBlock?

这里是我的代码:

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)!) 

我在做什么错了?

你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