swift如何从Int转换?到String

Son*_*bby 25 swift

在Swift中,我无法通过以下方式将Int转换为String:

var iString:Int = 100
var strString = String(iString)
Run Code Online (Sandbox Code Playgroud)

但我在Int中的变量?,有错误:Cant invoke 'init' with type '@Ivalue Int?'

let myString : String = "42"
let x : Int? = myString.toInt()

if (x != null) {
    // Successfully converted String to Int
    //And how do can i convert x to string???
}
Run Code Online (Sandbox Code Playgroud)

rak*_*hbs 41

您可以使用字符串插值.

let x = 100
let str = "\(x)"
Run Code Online (Sandbox Code Playgroud)

如果x是可选的,你可以使用optional binding

var str = ""
if let v = x {
   str = "\(v)"
}
println(str)
Run Code Online (Sandbox Code Playgroud)

如果你确定x永远不会nil,你可以做forced unwrapping一个optional value.

var str = "\(x!)"
Run Code Online (Sandbox Code Playgroud)

在一个声明中,您可以尝试这一点

let str = x != nil ? "\(x!)" : ""
Run Code Online (Sandbox Code Playgroud)

基于@ RealMae的评论,您可以使用以下内容进一步缩短此代码 nil coalescing operator (??)

let str = x ?? ""
Run Code Online (Sandbox Code Playgroud)

  • 显示结果:可选("100"),我只想要"100" (6认同)
  • @RealNmae 您的评论:让 str = x ?? 如果 x 是 Int 或 Int?,"" 会报错。默认值必须与 x 相同。 (4认同)

Ant*_*ine 19

我喜欢为此创建小扩展:

extension Int {
    var stringValue:String {
        return "\(self)"
    }
}
Run Code Online (Sandbox Code Playgroud)

这使得调用可选的int成为可能,而不必解开和考虑nil值:

var string = optionalInt?.stringValue
Run Code Online (Sandbox Code Playgroud)


小智 11

如果您需要单线,可以通过以下方式实现:

let x: Int? = 10
x.flatMap { String($0) } // produces "10"
let y: Int? = nil
y.flatMap { String($0) } // produces nil
Run Code Online (Sandbox Code Playgroud)

如果你需要一个默认值,你可以简单地使用

(y.flatMap { String($0) }) ?? ""
Run Code Online (Sandbox Code Playgroud)

编辑:

没有花括号更好:

y.flatMap(String.init)
Run Code Online (Sandbox Code Playgroud)


vj9*_*vj9 6

可选整数 -> 可选字符串:

如果x: Int?(或Double?- 无关紧要)

var s = x.map({String($0)})
Run Code Online (Sandbox Code Playgroud)

这将返回 String?

要获得一个String你可以使用:

var t = s ?? ""
Run Code Online (Sandbox Code Playgroud)