Objective c iap-从目标c到swift的转换

Objective c iap-从目标c到swift的转换,objective-c,swift,in-app-purchase,ios8,Objective C,Swift,In App Purchase,Ios8,我正在尝试将我的应用程序从objective c转换为swift,除了应用程序内购买之外,我的一切都正常工作。 我在项目中导入了objective c helper类,但在执行RequestProductsCompletionHandler部分时遇到了问题 在旧的objective c版本中,我有代码 [[MTIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *produc

我正在尝试将我的应用程序从objective c转换为swift,除了应用程序内购买之外,我的一切都正常工作。 我在项目中导入了objective c helper类,但在执行RequestProductsCompletionHandler部分时遇到了问题

在旧的objective c版本中,我有代码

[[MTIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *products) {
    if (success) {
        _products = products;

        if([[self appData] isPro] == FALSE)
            [[self bUpgrade] setUserInteractionEnabled:TRUE];
    }
}];
我试图将此部分转换为目标c,但到目前为止,我无法转换requestProductsWithCompletionHandler部分

有人能帮忙吗


我已经尝试使用与在objective c中相同的方法创建完成处理程序

requestProductsWithCompletionHandler(sucess: Bool, products : NSArray)
但我得到了编译器错误“调用中的额外参数‘products’和“类型名后的预期成员名或构造函数调用”。
如果我在没有参数的情况下尝试,我会在Swift中得到“调用中参数#1缺少参数”

,那么您的完成处理程序将是一个。语法与Objective-C中的块半相似,但不是在块外定义参数:

^(BOOL success, NSArray *products) { /* ... */ }
您可以在闭包中定义它们:

{ (success: Bool, products: [AnyObject]!) in /* ... */ }
因此,对
requestProductsWithCompletionHandler
的调用应该如下所示:

MTIAPHelper.sharedInstance().requestProductsWithCompletionHandler {
    (success: Bool, products: [AnyObject]!) in

    if success {
        // etc.
    }
}
您还可以让Swift为您推断参数类型:

MTIAPHelper.sharedInstance().requestProductsWithCompletionHandler {
    (success, products) in

    if success {
        // etc.
    }
}

你尝试过什么?你到底在哪里遇到麻烦?你有编译错误吗?运行时错误?我尝试使用“requestProductsWithCompletionHandler(suces:Bool,products:NSArray)”创建与目标c中相同的完成处理程序,但我得到了编译器错误“调用中的额外参数‘products’和“类型名后的预期成员名或构造函数调用”。如果我在没有参数的情况下尝试,我会得到“调用中缺少参数#1的参数”Ok。如果您编辑了您的问题并添加了与该错误一起尝试的代码,则会有所帮助。这样我们就更容易看到你从哪里来,为你指明正确的方向。酷。我得到了错误“[AnyObject]”但不是“NSArray”的子类型