мне было интересно, если это возможно, чтобы удалить принудительное разворачивание (Swift) при использовании такого кода:Предотвращения принудительного дополнительные развёрток после инициализации объекта
var currentProductRequest : SKProductsRequest?
public func requestProducts() -> Bool {
currentProductRequest = SKProductsRequest(productIdentifiers: Set<String>(identifiers))
currentProductRequest!.delegate = self
currentProductRequest!.start()
}
В этом случае currentProductRequest будет 100% не может быть нулем; он, однако, является факультативным, и в приведенном выше контексте компилятор не знает, что он не будет равен нулю, и ему необходимо принудительно развернуть. Поскольку инициализацией SKProductsRequest никогда не выработает ноль я не могу использовать
if let request = SKProductsRequest(productIdentifiers: Set<String>(identifiers)) {
....
}
Тот путь, который я знаю, сделав заявление о currentProductRequest неявно без упаковки, как вар currentProductRequest: SKProductsRequest !. Это, однако, заставит компилятор думать, что currentProductRequest никогда не будет никчем, что может и не быть.
Я знаю, что принудительная разворачивание никогда не вызовет проблемы (в данном случае), но это кажется мне уродливым. Кто-нибудь знает, существует ли способ сообщить компилятору, что currentProductRequest не будет равен нулю и, таким образом, удалит принудительное развертывание.
Это хорошее обходное решение. Если нет другого синтаксиса, спроектированного для того, что я попросил, я обязательно воспользуюсь этим подходом – Guus