1 装箱: optionalType 对其他类型的封装
var name: String? // 直接包装为 nil
name = "John" // 包装为 optional("John")
print(name)
2 拆箱的 3 中方式
// 1 if let 作用域为 if 括号内
if let name = name {
print(name)
}
// 2 强制拆箱 !明确知道该值存在时
print(name!)
// 3 隐式拆箱 声明时加 !
var v1: UIView!
v1 = UIView()
v1.backgroundColor = .red
v1.frame = CGRect(x: 0, y: 0, width: 100, height: 100)
3 可选链 节省了 if 的多层嵌套
var v2: UIView? = UIView()
v2?.subviews.first?.backgroundColor = .red
4 swift 中集合都是拷贝赋值
var nums = [1,2,3]
var nums2 = nums
print("nums:\(nums) nums2:\(nums2)") //nums:[1, 2, 3] nums2:[1, 2, 3]
nums.append(4)
print("nums:\(nums) nums2:\(nums2)")//nums:[1, 2, 3, 4] nums2:[1, 2, 3]
var str1 = "abcd"
var str2 = str1
print("str1: \(str1) str2: \(str2)")//str1: abcd str2: abcd
str1 += "e"
print("str1: \(str1) str2: \(str2)")//str1: abcde str2: abcd
var dict1 = ["name":"Jonh", "age":"1"]
var dict2 = dict1
print("dict1: \(dict1) dict2: \(dict2)")//dict1: ["name": "Jonh", "age": "1"] dict2: ["name": "Jonh", "age": "1"]
dict1["age"] = nil
print("dict1: \(dict1) dict2: \(dict2)")//dict1: ["name": "Jonh"] dict2: ["name": "Jonh", "age": "1"]
网友评论