1、可选类型()
swift:数据类型是非常严谨的。在实际工作的时候,有可能会把一个空值赋值给一个变量
swift不支持不同数据类型的赋值
所以swift得解决办法是:可选类型(可空类型)
可选类型的符号:
?:声明的是一个可选类型(数据类型)
可选类型是在数据类型的后面加上一个?
声明:
var 变量名:数据类型?
!:拆包
把可选类型转换成原有类型
Option(小明) -> 小明
隐示拆包:let name2:NSString! = name
显示拆包:可选类型值
可选类型:支持被赋值成nil的数据类型
可选类型转换成原有数据类型成为拆包
数据类型后?
可选类型变量后!
例如
let name:NSString? = "九九"
print(name!)
let name2:NSString! = name
print(name2)
2、as:作为,明确数据类型->使用(1、跟其他数据类型计算《两者是包含关系》2、需要把子类转换成父类的时候)
作用:as:明确数据类型(在使用的时候)
as:可以将子类转换成父类(明确子类是父类)
NSString:是一个类->结构体String
只能是子类转父类(明确子类是父类)
*****:不同数据类型之间的转换,必须有支持数据类转换的方法,才可以去转换
*****:如果是子类转父类,可以直接赋值
is:判断是不是某一个数据类型
swift 字符串判断 == 是否相同
插入字符串"XXX\z(插入的类容)"
代码:let name:NSString? = "九九"
print ((name as! String) + "和轻轻")
NSString:是一个类->结构体String
let label:UILabel = UILabel()
label as UIView
2.枚举
(1)样式
《1》元素前加case 而且如果分开写 不需要加逗号
《2》可以合并到 一个case 元素间使用 逗号隔开
(2)内容
《1》枚举的值 不止可以是数字 也可以是 字符串 其他类型 数据类型的一个团队
《2》直接输出 枚举的元素 是枚举的元素名 如果要获得里面的值 .rawValue
(3)调用
《1》枚举.元素
《2》.元素
enum LoginType:NSString{
case WeiXi = "微信"
case WeiBo = "微博"
case QQ = "QQ"
}
使用
let type1:LoginType = LoginType.WeiBo
let type2:LoginType = .QQ
print(type1,type2)
enum Item{
case color(Float,Float,Float)
case frame(Float,Float,Float)
}
使用
let item:Item = Item.color(1.0, 1.0, 1.0)
switch item{
case .color(1.0, 1.0, 0.0):
print("红色")
case .color(1.0, 0.0, 1.0):
print("绿色")
case .color(1.0, 1.0, 1.0):
print("黄色")
default:print("error")
}
init(frame: CGRect,color:UIColor) {
super.init(frame: frame)
self.backgroundColor = color
}
// 版本遗留问题,初始化XIB的时候调用
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}