2016-11-10 10 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>') 

任意のガイダンスは、多くの種類[ProductIdentifier]Arrayを返しsubscription["id"]

+0

を 'subscriptions'が定義されている方法は? –

+0

subscriptions = pages ["subscription"]を! [NSDictionary] – oppositemind

答えて

1

をいただければ幸いです。

アレイをタイプ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

関連する問題