NSUTF8StringEncoding结果编码带有'Optional'字符串的字符串

时间:2015-04-11 10:42:56

标签: ios swift

我使用NSUTF8StringEncoding对某些文字输入进行编码,输入会被编码,结果字符串包含一个' Optional'。已经制定了一个示例here

带有'可选'的编码字符串是什么?真的是什么意思?

这有什么重要作用吗?

2 个答案:

答案 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可选,它是包含字符串的可选项。