当前位置: 首页 > 面试题库 >

在Swift 3错误中访问代码

公孙弘图
2023-03-14
问题内容

Xcode 8 beta 4中的新增NSError功能桥接到Swift
Error协议类型。处理失败SKPaymentTransaction的时,这会影响StoreKit
。您应该检查以确保没有发生错误,因为交易被取消了才知道是否向用户显示错误消息。您可以通过检查错误的完成此操作code。但是使用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
        }
     }
     ...
}

现在error是一个Errornot NSErrorcode不是成员。


问题答案:

SKError在xCode 8和Swift 3中,cast to 似乎对我有用…

    guard let error = transaction.error as? SKError else {return}
    switch error.code {  // https://developer.apple.com/reference/storekit/skerror.code
    case .unknown: break
    case .paymentCancelled: break
    case .clientInvalid: break
    case .paymentInvalid: break
    case .paymentNotAllowed: break
    case .cloudServiceNetworkConnectionFailed: break
    case .cloudServicePermissionDenied: break
    case .storeProductNotAvailable: break
    }

不需要rawValue



 类似资料:
  • 我用的是阿拉莫菲尔4。当我这样做的时候 我在控制台里有这样的东西: 我感兴趣的是一条特别的路线: 如何获取此代码以便正确处理错误。我尝试了所有我能编出来的组合,但是在任何地方都没有这个代码的痕迹。

  • 问题内容: 有了一个有点烦人的提款机。我设法编写了以下代码,该代码从url下载JSON并将其显示在屏幕上: 但是 …这很奇怪,因为如果我想将接收到的json存储在状态对象的数据中,但是当我试图这样做时,它表示状态变量实际上不存在… 这是什么意思?由于它是 组件的WILL挂载 功能,因此状态尚不存在,所以这就是为什么我无法将接收到的数据存储在那里的原因? 有什么办法可以解决这个问题?非常感谢 PS

  • 我正在尝试通过Twython验证用户的Twitter帐户 我得到了 Twitter API返回401(未经授权)、无效/过期令牌 回溯(最近一次调用): 文件“/Users/bharatagarwal/my-venv/lib/python2.7/site-packages/django/core/handers/base.py”,第149行,get_response-response=self。p

  • 当尝试在我的新Java 8项目中使用javafx相关的类时,我从Eclipse得到一个访问限制错误。到目前为止,我能找到的唯一‘解决方案’是告诉eclipse忽略访问限制,但我对此并不满意。错误示例: 我正在使用Eclipse Kepler和Java 8的Eclipse JDT补丁。 这似乎是一个与JavaFX不是JavaSE执行环境的一部分这一事实有关的问题。 我现在很困惑,因为根据http:/

  • 大家好,我几个月前安装了premium edition burp。我可以很容易地从我的电脑上拦截web应用程序。但是当我试图从我的Android设备上拦截应用程序时,问题出现了。我很努力地在网上搜索任何可能的解决方案,但都没有效果。当我用手机连接burp并试图访问Http网站时,我总是无法通过代理服务器错误访问。还有,你能告诉我如何拦截来自messenger、Facebook for Androi

  • 问题内容: 我似乎找不到解决此问题的方法。我正在做的是声明一个整数,它告诉我代码不可访问。 问题答案: 一旦使用方法,您将返回到首先调用该方法的方法。返回后放置的任何语句都是没有意义的,因为那是在不严重违反程序计数器的情况下无法到达的代码(在Java中可能是不可能的)。