在SWIFT中,我不能将Int转换为字符串:
var iString:Int = 100
var strString = String(iString)
但我在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???
}
12条答案
按热度按时间az31mfrm1#
您可以使用字符串内插。
如果
x
是可选的,则可以使用optional binding
如果您确定
x
永远不会是nil
,则可以在optional value
上执行forced unwrapping
。在一条语句中,您可以尝试这样做
根据@RealMae的评论,您可以使用
nil coalescing operator (??)
进一步缩短此代码klr1opcd2#
我喜欢为这个创建一些小的扩展:
这使得调用可选的int成为可能,而不必解包和考虑nil值:
5lhxktic3#
如果您需要一行程序,可以通过以下方式实现:
如果需要缺省值,只需使用
编辑:
没有大括号就更好了:
Apple's flatMap(_:) Documentation
2mbi3lxu4#
可选Int->可选字符串:
如果
x: Int?
(或Double?
-不重要)这将返回
String?
要获取
String
,您可以使用:63lcw9qa5#
希望这能有所帮助
bwleehnv6#
也许很粗糙,但你可以这样做:
oipij1gg7#
Sonrobby,我相信“Int?”表示可选的int。基本上,根据我的理解,需要打开 Package 。
因此,执行以下操作可以很好地工作:
那个“!”展开变量。希望这个能帮上忙!
正如rakehbs提到的,确保变量不是Nill。
kuarbcqp8#
为了获得as described here中的实际值,您需要“展开”可选的内容。您可以用“!”来展开选项。因此,在您的示例中,代码将为:
或者在该条件下,您可以使用字符串插值法:
a64a0gku9#
为了防止不安全的可选展开,我按照@AntiStrike12的建议使用了如下方法:
djp7away10#
SWIFT 3:
这样可以避免在代码中使用详细的:
String(describing:iString)
**奖励:**为常用类型添加类似的初始化方法,如:
Bool
、CGFloat
等。lymnna7111#
您可以尝试此操作来转换Int?要串起来
oxosxuxt12#
如果未设置(Nil),则需要空字符串