我想知道在使用这样的代码时是否可以删除强制展开(Swift):
var currentProductRequest : SKProductsRequest?
public func requestProducts() -> Bool {
currentProductRequest = SKProductsRequest(productIdentifiers: Set<String>(identifiers))
currentProductRequest!.delegate = self
currentProductRequest!.start()
}
在这种情况下 currentProductRequest 将 100% 不为零;然而,它是可选的,在上述上下文中,编译器不知道它不会为 nil,它需要强制展开。由于初始化 SKProductsRequest 永远不会产生 nil 我不能使用
if let request = SKProductsRequest(productIdentifiers: Set<String>(identifiers)) {
....
}
我知道的一种方法是让 currentProductRequest 的声明像 var currentProductRequest : SKProductsRequest! 一样隐式展开。然而,这会使编译器认为 currentProductRequest 永远不会是 nil,但事实可能并非如此。
我知道强制展开永远不会导致问题(在这种情况下),但它对我来说似乎很难看。有谁知道是否有办法让编译器知道 currentProductRequest 不会为零,从而消除强制解包。