首页 > 解决方案 > Swift 4:无法将字符转换为字符串

问题描述

我正在从字符中的数字字符串中提取一个数字,但无法将该字符转换为字符串或 int。这是我的代码:

func processString(_ s: String) ->Bool {
    var sum = 0
    for char in s{
        let number = String(char){ //error Cannot invoke initializer for type 'String' with an argument list of type '(Character, () -> ())'

        }
    }
}

如果我尝试转换为 Int:

func processString(_ s: String) ->Bool {
    var sum = 0
    for char in s{
        let number = Int(String(char)){ //Cannot invoke initializer for type 'Int' with an argument list of type '(String, () -> ())'

        }
    }
}

你们中的任何人都知道我做错了什么或者为什么不能将字符转换为字符串或整数?

我会非常感谢你的帮助。

标签: swift4

解决方案


那里有一些多余的{ }括号是不必要的。删除这些应该可以解决编译器问题。

func processString(_ s: String) ->Bool {
   var sum = 0
   for char in s{
      let charString = String(char)
      print(charString)
   }
}

在下一个示例中,由于 Int(_ string: String) 初始化程序可以返回 nil,因此您可以使用if let语句来解包结果,这看起来就像您可能尝试使用的那样{ } 它看起来像这样:

func processString(_ s: String) ->Bool {
    var sum = 0
    for char in s{
        if let number = Int(String(char)) {
            // number is not nil
        }
    }
}

推荐阅读