gpt4 book ai didi

ios - 请求完成处理程序 fatal error : unexpectedly found nil while unwrapping an optional value exception

转载 作者:行者123 更新时间:2023-11-28 14:59:29 25 4
gpt4 key购买 nike

我已经在我的 iOS 应用中实现了应用内购买。在这里,我在 SKProductsRequestDelegate 方法中使用了 RequestCompletionHandler,如下所示。有时应用程序会因为 nil 值而崩溃。我的代码有什么问题?

completionHandler 声明为:fileprivate var completionHandler: RequestCompletionHandler!

func productsRequest(_ request: SKProductsRequest!, didReceive response: SKProductsResponse!) {

print("Successfully loaded list of products..")
productsRequest = nil
if response.products.count > 0 {
if let skProducts = response.products as? [SKProduct] {
for product in skProducts {
print("found product: \(product.productIdentifier), \(product.localizedTitle), \(product.price.floatValue)")
}
completionHandler(true, skProducts as NSArray) //unexpectedly found nil while unwrapping an optional value exception getting in this line
completionHandler = nil
}
}
}

请参阅下面的屏幕截图以更好地理解:

enter image description here

最佳答案

如果完成处理程序可以是 nil 我建议使用 if let,或者在你的情况下可选方法调用:

completionHandler?(true, skProducts as NSArray)

由于您使用了隐式解包可选(您在 completionHandler 声明中使用了 !),completionHandler(true, skProducts as NSArray) 行是与 completionHandler!(true, skProducts as NSArray) 相同,它忽略了 completionHandler 可能为 nil 的可能性并尝试执行它。如果 completionHandlernil,它会崩溃。除非您可以 100% 确定它永远不会是 nil,否则永远不要使用隐式解包。

此外,我强烈建议不要使用隐式解包类型作为属性类型,除非您有充分的理由这样做。在这种情况下,显然 completionHandler 可以是 nil。而是将声明更改为可选的:

fileprivate var completionHandler: RequestCompletionHandler?

关于ios - 请求完成处理程序 fatal error : unexpectedly found nil while unwrapping an optional value exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49069274/

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