Как я могу получить значение из перечисления? - PullRequest
0 голосов
/ 20 декабря 2018

Я использую SwiftyStoreKit и выясняю, как получить статус подтверждения квитанции.Я хотел бы получить status из receiptInvalid(receipt: ["status": 21004, "environment": Sandbox], status: SwiftyStoreKit.ReceiptStatus.secretNotMatching).Как бы получить значение 21004 ?

receiptInvalid является результатом последнего случая:

public enum ReceiptError: Swift.Error {
// No receipt data
case noReceiptData
// No data received
case noRemoteData
// Error when encoding HTTP body into JSON
case requestBodyEncodeError(error: Swift.Error)
// Error when proceeding request
case networkError(error: Swift.Error)
// Error when decoding response
case jsonDecodeError(string: String?)
// Receive invalid - bad status returned
case receiptInvalid(receipt: ReceiptInfo, status: ReceiptStatus)
}

ReceiptInfo:

public typealias ReceiptInfo = [String: AnyObject]

Конечная цель - проверить код 21007 для Apple App Review.Спасибо!

Редактировать: Какой код идет туда, где находится комментарий?

case .error(let error):
            print("Receipt verification failed: \(error)")
            //error prints receiptInvalid(receipt: ["status": 21004, "environment": Sandbox], status: SwiftyStoreKit.ReceiptStatus.secretNotMatching)
            if case .receiptInvalid = error {
                //What goes here?
            }

1 Ответ

0 голосов
/ 20 декабря 2018

Вы можете расширить перечисления с помощью удобных вычисляемых переменных для доступа к связанным значениям:

 extension ReceiptError {
   var invalidReceipt: (receipt: ReceiptInfo, status: RecriptStatus)? {
       switch self {
       case .receiptInvalid(let receipt, let status):
           return (receipt: receipt, status: status)
       default:
           return nil
       }
   }
}

print(someReceiptError.invalidReceipt.receipt["status"
...