【问题标题】: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)!)

我做错了什么?

【问题讨论】:

    标签: closures swift completion-block


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多