我理解以下代码......
var dic1: Dictionary<String, String> = ["key" : "value"]
var str1: String? = dic1["key"]// key is not found => nil => String?
但我不能......
var dic2: Dictionary<String, String?> = ["key" : nil]
var str3: String?? = dic2["key"]// key is not found or set nil value => nil => why String??
String的必要性是什么?和字符串的区别?和String ??。
答案 0 :(得分:4)
String?
和String??
之间的区别如下:
let s1 = Optional<String>() // String?
let s2 = Optional<Optional<String>>() // String??
参考你的例子:
subscript
的{{1}}会返回可选类型。
因此,由于Dictionary
中的值类型为dic2
,因此首先必须解包该可选项以确定该键是否存在该值,然后您必须打开String?
。
以下是一个示例:
String?