swift - 在 Swift 3 中访问代码错误

标签 swift swift3

Xcode 8 beta 4 中的新增功能,NSError 已桥接到 Swift Error 协议(protocol)类型。这会在处理失败的 SKPaymentTransaction 时影响 StoreKit。您应该检查以确保没有因为事务被取消而发生错误,以了解是否向用户显示错误消息。您可以通过检查错误的代码来完成此操作。但是使用 Error 而不是 NSError 时,没有定义 code。我一直无法弄清楚如何正确地从 Error 获取错误代码。

这在以前版本的 Swift 3 中有效:

func failedTransaction(_ transaction: SKPaymentTransaction) {
    if let transactionError = transaction.error {
        if transactionError.code != SKErrorCode.paymentCancelled.rawValue {
            //show error to user
        }
     }
     ...
}

现在 errorError 而不是 NSErrorcode 不是成员。

最佳答案

访问 Swift 3 错误类型中的代码和域属性的另一个选项是将其扩展如下:

extension Error {
    var code: Int { return (self as NSError).code }
    var domain: String { return (self as NSError).domain }
}

关于swift - 在 Swift 3 中访问代码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39628203/

相关文章:

swift - 使用 Firebase 异步编写代码

ios - indexPathForSelectedRow 返回 nil 但未取消选择

ios - 在 Swift 中获取类似缩写的时区名称

ios - 从 UIViewController 类获取单元格中的 uiswitch 值

ios - swift3 playground 无法获取路径的沙箱扩展

swift - xcode 8 测试版 3 : Expected ',' joining parts of a multi-clause condition

swift - 如何更改 TableView 中按钮的标题 (Swift)

ios - CocoaPod是否使用_frameworks!使用 iOS7?

ios - 自动布局 : frame is 600x480 in compact/Any size class, 的 ScrollView 大小大于 iphone5?

ios - 当客户端连接突然丢失时,Swift XMPP 消息会丢失