将可选值转换为强制值非常简单:
var aString: String? = "Hello"
var anotherString: String = aString!
在相反的方向上它甚至更简单,因为没有展开:
var myString: String = "Hello"
var myOtherString: String? = myString
将包含可选值的强制值数组转换为包含强制值的强制值数组会稍微复杂一些:
var anArray: Array<String?> = ["Hello"]
var anotherArray: Array<String> = anArray as Array<String>
这里有点不同的是你不需要!
解开值。你只是告诉它期望什么类型。
这就是我卡住的地方。对我来说,做相反的事情应该是这样的:
var myArray: Array<String> = ["Hello"]
var myOtherArray: Array<String?> = myArray as Array<String?>
但这给出了错误:
“字符串”与“字符串”不同?
简单地说,它给出了同样的错误:
var myOtherArray: 数组 = myArray
我以为我对此有一个公平的把握,但现在我不确定。如何将包含的强制值转换为包含的可选值(不使用休闲 for 循环)?
休闲for循环(不理想):
var myArray: Array<String> = ["Hello"]
var myOtherArray: Array<String?> = []
for loopString: String in myArray {
myOtherArray.append(loopString)
}