未解析的标识符 - SKErrorPaymentCancelled [重复]

Posted

技术标签:

【中文标题】未解析的标识符 - SKErrorPaymentCancelled [重复]【英文标题】:Unresolved Identifier - SKErrorPaymentCancelled [duplicate] 【发布时间】:2016-03-22 14:11:13 【问题描述】:

我昨天更新到最新版本的 Xcode 7.3,发布了 ios 9.3 和 OSX 10.11.4(包括 Swift 2.2)。

当我构建我的应用程序时,我收到一条错误消息 Use of unresolved identifier 'SKErrorPaymentCancelled' 我用来检查用户是否取消了付款。我没有做任何特别的事情,只是记录它(如下所示)。

private func failedTransaction(transaction: SKPaymentTransaction) 
    print("failedTransaction...")
    if transaction.error!.code == SKErrorPaymentCancelled 
        print("Transaction Cancelled: \(transaction.error!.localizedDescription)")
    
    else 
        print("Transaction Error: \(transaction.error!.localizedDescription)")
    
    SKPaymentQueue.defaultQueue().finishTransaction(transaction)

我在 Swift 2.2 变更日志中找不到任何说明 StoreKit 中的任何内容已更改的内容。这在我更新之前运行良好。

还有其他人看到这个问题吗?

【问题讨论】:

【参考方案1】:

自 iOS 9.3 起,常量 SKErrorPaymentCancelled 已从 SDK 中删除。相反,请使用 SKErrorCode.PaymentCancelled 枚举。

有关更多信息,请参阅iOS 9.3 API Diffs 的StoreKit Changes for Swift 页面和我的规范问答帖子Use of unresolved identifier when using StoreKit constants with iOS 9.3/Xcode 7.3。

【讨论】:

我错过了这方面的文档吗?他们是否将所有 StoreKit 错误常量移至 SKErrorCode?​​span> @mattdonders 查看 iOS 9.3 SDK 的 StoreKit 更新日志:developer.apple.com/library/ios/releasenotes/General/… 哦,谢谢,绝对错过了。那么还有一个问题要跟进(如果你知道的话)。可以根据 SKErrorCode 检查交易的哪些属性?我以前的代码(从上面固定)是transaction.error!.code == SKErrorCode.PaymentCancelled,但现在我得到Cannot convert value of type 'SKErrorCode' to expected argument type 'Int' @mattdonders 使用.rawValue 从枚举中获取Int 值。 太棒了 - 非常感谢您的帮助。时间一过就会接受。

以上是关于未解析的标识符 - SKErrorPaymentCancelled [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用未解析的标识符 'json' (Swift 3) (Alamofire)

未解析的标识符范围

使用未解析的标识符 countElements [重复]

出现错误:使用未解析的标识符“LinkingObjects”

使用未解析的标识符“tableView”

SDKApplicationDelegate 使用未解析的标识符