我正在查看使用SKError“代码”属性或变量的代码示例。 我似乎无法为此属性定义任何定义。 xcode / Swift如何访问此属性? 我正在使用带有此问题的SwiftyStoreKit。 谢谢
试图在文档中查找SKError,那里什么也没有。 尝试过在xcode中进行实时调试,无法从xcode中了解这是从哪里来的。
SwiftyStoreKit.purchaseProduct("X", quantity: 1, atomically: true) { result in
switch result {
case .success(let purchase):
print("Purchase Success: \(purchase.productId)")
let defaults = UserDefaults.standard
defaults.set(true, forKey: "Y")
case .error(let error):
switch error.code {
case .unknown: self.Alert("Z")
只想知道xcode如何访问此属性。
答案 0 :(得分:0)
请参见SKError.Code
documentation中的SKError
documentation。在Xcode中,您还可以按 shift + 命令 + o (字母“ oh”),然后输入SKError
并跳至定义。
这些是此时的值:
case unknown
错误代码,指示发生未知或意外错误。
case clientInvalid
错误代码,指示不允许客户端执行尝试的操作。
case paymentCancelled
错误代码,指示用户取消了付款请求。
case paymentInvalid
错误代码,指示App Store无法识别付款参数之一。
case paymentNotAllowed
错误代码,指示不允许用户授权付款。
case storeProductNotAvailable
错误代码,表明所请求的产品在商店中不可用。
case cloudServicePermissionDenied
错误代码,指示用户不允许访问云服务信息。
case cloudServiceNetworkConnectionFailed
错误代码,表明设备无法连接到网络。
case cloudServiceRevoked
错误代码,指示用户已撤消使用此云服务的权限。
case privacyAcknowledgementRequired
错误代码,指示用户尚未确认Apple的Apple Music隐私政策。
case unauthorizedRequestData
错误代码,指示该应用正在尝试使用其不具备必需权利的属性。
case invalidOfferIdentifier
错误代码,指示商品标识无效。
case invalidOfferPrice
错误代码,表明您在App Store Connect中指定的价格不再有效。
case invalidSignature
错误代码,指示付款折扣中的签名无效。
case missingOfferParams
错误代码,表明付款折扣中缺少参数。
答案 1 :(得分:0)
这可能有助于认识到SKError符合Error,后者已桥接到NSError。如果查看NSError文档,您会看到它具有一个code
属性,它是一个Int。因此,SKError也有这个。
在这一切最终源于Objective-C的世界中,在Objective-C枚举中列出了SKError的code
的可能NSInteger值:
typedef NS_ENUM(NSInteger,SKErrorCode) {
SKErrorUnknown,
SKErrorClientInvalid,
SKErrorPaymentCancelled,
// ...
}
它作为具有Int原始值的SKError.Code
类型的Swift枚举被导入到Swift中:
public struct SKError {
public enum Code : Int {
case unknown
case clientInvalid
case paymentCancelled
// ...
}
}
为了方便起见,可以将名称.clientInvalid
等与SKError的code
进行比较。