Swift3 Storekit - 将字符串数组转换为Set <productidentifier>

时间:2016-11-10 16:14:46

标签: ios swift xcode

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

My Globals Struct:

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>')

非常感谢任何指导

2 个答案:

答案 0 :(得分:1)

subscription["id"]会返回Array类型的[ProductIdentifier]

您无法将数组转换为as! ProductIdentifier类型。

或者:

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

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

我假设后者,作为&#34; id&#34;应该是ProductIdentifier,而不是数组。

答案 1 :(得分:0)

我不得不操纵Set:

for subscription in subscriptions {
    Globals.productIdentifiers.insert(subscription["id"] as! String)
}
Globals.products = []
Globals.store = IAPHelper(productIds: Globals.productIdentifiers)
Globals.store.requestProducts{success, products in
    if success {
        ......
    }
}