我正在尝试在应用购买中实施storekit。以下硬编码值可以正常工作:

我的全局结构:

static var productIdentifiers: Set<ProductIdentifier> = ["com.app.myIAP"]
static var store = IAPHelper(productIds: Globals.productIdentifiers)

在我的职能:
Globals.store = IAPHelper(productIds: productIdentifiers)

但是,当我尝试动态创建标识符时,出现错误:
var strIdentifiers = [String]()
for subscription in subscriptions {
    strIdentifiers.append(subscription["id"] as! String)
}
let productIdentifiers: Set<ProductIdentifier> = strIdentifiers
Globals.store = IAPHelper(productIds: productIdentifiers)
Globals.store.requestProducts{success, products in
    if success {
        .......
    }
}

我收到此错误:
Cannot assign value of type '[String]' to type 'Set<ProductIdentifier>' (aka 'Set<String>')

任何指导将不胜感激

最佳答案

subscription["id"]返回类型为Array[ProductIdentifier]

您不能将数组转换为as! ProductIdentifier类型。

要么:

将演员表更改为as! [ProductIdentifier]
要么

检查设置subscription["id"]的位置。也许您不小心设置了一个数组。

我认为稍后是因为“id”应该是ProductIdentifier而不是数组。

关于ios - Swift3 Storekit-将字符串数组强制转换为Set <ProductIdentifier>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40532192/

10-11 19:47