2016-11-10 41 views
1

我試圖在應用程序購買中實現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

回答

1

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

您不能將陣列轉換爲as! ProductIdentifier類型。

或者:

更改強制轉換爲as! [ProductIdentifier]

檢查要設置subscription["id"]的地方。也許你不小心設置了一個數組。

我認爲以後,作爲一個「ID」應該可能是ProductIdentifier,而不是一個數組。

0

我不得不操縱一組:

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