我使用NSUTF8StringEncoding
对某些文字输入进行编码,输入会被编码,结果字符串包含一个' Optional'。已经制定了一个示例here。
带有'可选'的编码字符串是什么?真的是什么意思?
这有什么重要作用吗?
答案 0 :(得分:1)
可选变量是可能有也可能没有值的变量。 查看您的示例here
我们可以看到数据类型为NSData?
与objective-c不同,我们可以愉快地将消息发送到nil值,我们需要确保'data'在我们可以使用它之前确实有一个值
如果您确定它有值,您可以像这样明确地展开它
let myString = "encode me"
let data : NSData? = myString.dataUsingEncoding(NSUTF8StringEncoding)
data!.someNSDataFunction()
如果数据为零,这将会崩溃。要安全地打开它,你可以这样做
if let actualData = data
{
actualData.someNSDataFunction()
}
else
{
println("data has not been set")
}
答案 1 :(得分:1)
您必须了解的是,optional是与其包含的所需对象不同的数据类型。可选的“包装”或包含其他一些对象。可选的可以是空的,由nil表示,也可以包含另一个对象。
在内部,一个可选项是一个枚举,它有两个值,Some和None。某些案例具有相关值。可选项是泛型。存储在Some case(非空)中的关联值可以是任何类型,并确定可选的类型。
如果您打印一个可选项,您会看到容器和存储在其中的值,或者您看到nil(因为nil可选项不包含任何内容。)
let aString:String? = "Foo"
println("aString = \(aString)")
显示类似
的内容可选的( “富”)
那是因为aString不是String可选,它是包含字符串的可选项。