Ios “与”的区别是什么;“作为字符串”;及;stringvalue“;斯威夫特?
我有一个密码:Ios “与”的区别是什么;“作为字符串”;及;stringvalue“;斯威夫特?,ios,string,swift,typecasting-operator,Ios,String,Swift,Typecasting Operator,我有一个密码: var i : AnyObject! i = 10 println(i as String) println(i.stringValue) 它在上以字符串的形式崩溃,但在第二行i.stringValue中运行 在上面几行中,asString和stringValue之间有什么区别?都将Int转换为String,但这将不再有效。 在Swift 2中,这样做是不可能的 你应该使用: let i = 5 print(String(format: "%i", i)) 这将特别地将int
var i : AnyObject!
i = 10
println(i as String)
println(i.stringValue)
它在上以字符串的形式崩溃,但在第二行i.stringValue
中运行
在上面几行中,asString
和stringValue
之间有什么区别?都将Int转换为String,但这将不再有效。
在Swift 2中,这样做是不可能的
你应该使用:
let i = 5
print(String(format: "%i", i))
这将特别地将int值写为字符串。stringValue
是一种将整数提取为字符串值的方法,但是作为字符串
将不起作用,如果您使用作为字符串
,那么Xcode将强制您添加使用作为进行编码,这样做不好,而且永远不会成功,会使你的应用程序崩溃。您不能将Int
强制转换为String
。它总是会失败。这就是为什么当你做as!String
它会使应用程序崩溃
所以在这里选演员不是个好主意
这里还有一些将整数提取为字符串值的方法:
let i : Int = 5 // 5
let firstWay = i.description // "5"
let anotherWay = "\(i)" // "5"
let thirdWay = String(i) // "5"
这里不能使用let fortwway=i.stringValue
,因为Int没有名为stringValue
但您可以对任何对象执行相同的操作,如下所示:
let i : AnyObject = 5 // 5
let firstWay = i.description // "5"
let anotherWay = "\(i)" // "5"
let thirdWay = String(i) // "5"
let forthway = i.stringValue // "5" // now this will work.
使用as String
,您不能强制转换值,但是您定义变量包含String
,但在您的情况下,它是Int
。因此它会崩溃
而另一种方法,即i.stringValue
将您的值转换为String
。因此它不会给您带来任何崩溃并成功转换为String值
注意:在使用AnyObject
时,变量具有memberstringvalue
…但Int不必…将Int-value检出@Dharmesh Kheni-answer