可选和普通字符串之间的区别

时间:2014-06-25 08:04:34

标签: ios iphone swift ios8

String?,String之间的区别!和字符串

我正在使用此代码:

    var myString:String? = nil
    var myString1:String = ""
    var myString2:String! = nil

    println(myString2)

这里它在myString2中给出nil而不是运行时错误。

2 个答案:

答案 0 :(得分:1)

有更好的解释,但简单的版本是:

String是一个字符串。它包含一个String值。

String?是一个可选字符串。它可以保存String值或nil。您可以打开可选项并立即尝试使用!来访问String值!像这样:

var str: String? = nil
str!.length

该代码将导致运行时错误,因为str为零。获得可选值的更安全的方法是使用if let:

var str: String? = nil
if let myStr = str{
    myStr.length
}

它具有与上述代码相同的功能,但不会在nil值上崩溃。

String!是一个隐式解包的可选项。它的工作方式与常规可选方法相同,但假设它是非零的,所以当你调用它时,它会尝试访问该值,就像它是常规可选项一样!后。

println适用于所有这些类型的原因是因为它可以使用字符串,字符串选项和nil值并处理它们。

var str: String? = "hello world"
println(str)
println(str!)
println(nil)    

一切都应该有效。

答案 1 :(得分:0)

@ connor的回答是正确的。

var Amy:Wife? // Amy is your girlfriend, she may or may not be your wife.
var Amy:Wife  // Amy is your wife.
var Amy:Wife! // Amy will be your wife, no matter you like it or not.