在Swift中,我有一个函数,我将数组传递给,然后在另一个函数中使用该数组。我一直收到这个错误:
无法转换类型'数组[字符串]'的值预期参数类型'设置< String>'
@objc func getProductInfo(productIDs: Array<String>) -> Void {
print(productIDs) //this works with correct data
SwiftyStoreKit.retrieveProductsInfo(productIDs) { result in
...
其余的工作,并在我传入["Monthly", "Yearly", "etc..."]
的常规数组时进行测试。
答案 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))