2016-09-17 125 views
1

在Swift中,我有一個函數將一個數組傳遞給數組,然後在另一個函數中使用該數組。我不斷收到此錯誤:無法將類型'Array [String]'的值轉換爲期望的參數類型'Set <String>'

Cannot convert value of type 'Array[String]' to expected argument type 'Set<String>'

@objc func getProductInfo(productIDs: Array<String>) -> Void { 
    print(productIDs) //this works with correct data 

    SwiftyStoreKit.retrieveProductsInfo(productIDs) { result in 

    ... 

其餘的工作,當我通過在["Monthly", "Yearly", "etc..."]規則陣列進行測試。

+0

什麼'SwiftyStoreKit.retrieveProductsInfo()'的聲明看起來像? –

+0

@RemyLebeau是一個接受產品ID的數組的函數。當我有陣列[「每月」,「每年」]硬輸入它沒有問題。試圖通過我的應用動態地傳遞一個數組。 – Dan

+0

這不是我問的。 'retrieveProductsInfo()'的**實際**聲明是什麼?很顯然,它期望的不是你給的東西,否則你不會得到錯誤。 –

回答

1

你只需要改變你的方法參數類型。 SwiftyStoreKit方法期待一個字符串集。您的方法聲明應該是:

func getProductInfo(productIDs: Set<String>) 
2

["Monthly", "Yearly", "etc..."]不是一個數組,它是一個數組字面量。 Set可以用數組文字隱式初始化。但是,它不能用數組隱式地初始化。

let bees: Array<String> = ["b"] 
let beeSet: Set<String> = bees // Causes Compiler Error 

但是,如果你明確地初始化它,那麼它將工作。

let sees: Array<String> = ["c"] 
let seeSet: Set<String> = Set(sees) // Compiles 

因此,在你的例子顯式初始化應該工作。

@objc func getProductInfo(productIDs: Array<String>) -> Void { 
    print(productIDs) //this works with correct data 

    SwiftyStoreKit.retrieveProductsInfo(Set(productIDs)) { result in 

    ... 
1

我使用相同的lib面臨問題。 這應該工作 SwiftyStoreKit.retrieveProductsInfo(Set(productIDs))

相關問題