gpt4 book ai didi

objective-c - iap - 从 objective c 到 swift 的转换

转载 作者:行者123 更新时间:2023-11-28 13:20:50 28 4
gpt4 key购买 nike

我正在尝试将我的应用程序从 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];
}
}];

我正在尝试将此部分转换为 objective-c ,但到目前为止我无法转换 requestProductsWithCompletionHandler 部分

谁能帮忙?

我已经尝试创建完成处理程序,就像在 objective-c 中一样使用

requestProductsWithCompletionHandler(sucess: Bool, products : NSArray)

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

最佳答案

在 Swift 中,您的完成处理程序将是一个 closure .语法类似于 Objective-C 中的 block ,但不是在 block 外定义参数:

^(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.
}
}

关于objective-c - iap - 从 objective c 到 swift 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25984030/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com