无法将类型为“Int”的值转换为预期的参数类型“Range”。

13 浏览
0 Comments

无法将类型为“Int”的值转换为预期的参数类型“Range”。

这个问题已经有了答案

在Swift中获取字符串的第n个字符

在Swift中String.Index是如何工作的

试图在Swift Spritekit中制作一个函数,它看起来像这样:

func card_vals(card_value_set: [Int], card_set: [String]) {
        var card_value_set = card_value_set
        var card_set = card_set
        for i in card_set {
            var j = Int(i[0])
                card_value_set.append(j)
            }
    }

简单来说,该函数是将一个卡牌集合,例如[\"3C\", \"4D\"],看作是一个Str列表,卡牌值集合应该像[3,4]一样,是一个Int列表。

然而,我遇到了以下错误:

cannot convert value of type 'Int' to expected argument type 'Range

是否有任何帮助消除这个错误?

谢谢

admin 更改状态以发布 2023年5月19日
0
0 Comments

你需要对其进行字符串包装

i[0] 返回字符,没有接受字符类型的整数类型的初始化器。

func card_vals(card_value_set: [Int], card_set: [String]) {
    var card_value_set = card_value_set
    var card_set = card_set
    for i in card_set {
        if let first = i.first, let intData = Int(String(first)) {
            card_value_set.append(intData)
        }
    }
}

或者您也可以这样做

var j = Int(String(i[0])) ?? 0

0