无法转换类型&#39;数组[String]&#39;的值预期参数类型&#39;设置<string>&#39;

时间:2016-09-17 00:59:46

标签: arrays swift

在Swift中,我有一个函数,我将数组传递给,然后在另一个函数中使用该数组。我一直收到这个错误:

  

无法转换类型&#39;数组[字符串]&#39;的值预期参数类型&#39;设置&lt; String&gt;&#39;

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

    SwiftyStoreKit.retrieveProductsInfo(productIDs) { result in

    ...

其余的工作,并在我传入["Monthly", "Yearly", "etc..."]的常规数组时进行测试。

3 个答案:

答案 0 :(得分:2)

["Monthly", "Yearly", "etc..."]不是数组,它是一个数组文字。可以使用数组文字隐式初始化Set。

let ayeSet: Set<String> = ["a"] // Compiles

但是,它不能用数组隐式初始化。

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 :(得分:1)

您只需要更改方法参数类型即可。 SwiftyStoreKit方法期待一个字符串集。您的方法声明应为:

func getProductInfo(productIDs: Set<String>)

答案 2 :(得分:1)

我使用相同的lib来解决问题。 这应该工作 SwiftyStoreKit.retrieveProductsInfo(Set(productIDs))