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

问题描述:

我试图在应用程序购买中实现storekit。下面的硬编码值工作得很好:Swift3 Storekit - 将字符串数组转换为Set <ProductIdentifier>

我的全局结构:

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

任何指导将不胜感激

+0

如何定义'subscriptions'? –

+0

let subscriptions = pages [“subscriptions”] as! [NSDictionary] – oppositemind

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

您不能将阵列转换为as! ProductIdentifier类型。

或者:

更改强制转换为as! [ProductIdentifier]

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

我认为以后,作为一个“ID”应该可能是ProductIdentifier,而不是一个数组。

我不得不操纵一组:

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 { 
     ...... 
    } 
} 
+0

而不是回答你自己的问题,更喜欢更新问题。 – shallowThought