献给一起学习的小伙伴
- 做OC开发也快2年了,最近公司要求Swift来开发,组里的小伙伴就叫我整理资料给他们,所以就抽空写了这个,每天写一点,把OC 和**Swift **的不同点都标注出来,方便大家对比,我也小小的回顾一下,希望看的小伙伴们持续关注.
- 今天大概说下枚举类型、结构体的基本使用,开搞:
1- 结构体
结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合
结构体(struct)指的是一种数据结构
结构体是值类型,在方法中传递时是值传递
结构的定义格式
struct Location {
var x : Double
var y : Double
}
// 初始化结构体
struct Location {
var x : Double
var y : Double
}
// 创建结构体
let location = Location(x: 90, y: 90)
- 结构体的增强
- 默认情况下创建Location时使用Location(x: x值, y: y值)
- 但是为了让我们在使用结构体时更加的灵活,swift还可以对构造函数进行扩充
- 扩充的注意点
- 在扩充的构造函数中必须保证成员变量是有值的
- 扩充的构造函数会覆盖原有的构造函数
struct Location {
var x : Double
var y : Double
init(x : Double, y : Double) {
self.x = x
self.y = y
}
init(xyString : String) {
let strs = xyString.componentsSeparatedByString(",")
x = Double(strs.first!)!
y = Double(strs.last!)!
}
}
let location = Location(x: 100, y: 100)
let location1 = Location(xyString: "100,100")
- 为结构体扩充方法
- 为了让结构体使用更加灵活,swift的结构体中可以扩充方法
- 例子:为了Location结构体扩充两个方法
- 向水平方向移动的方法
- 向垂直方向移动的方法
struct Location {
var x : Double
var y : Double
init(x : Double, y : Double) {
self.x = x
self.y = y
}
init(xyString : String) {
let strs = xyString.componentsSeparatedByString(",")
x = Double(strs.first!)!
y = Double(strs.last!)!
}
mutating func moveH(x : Double) {
self.x += x
}
mutating func moveV(y : Double) {
self.y += y
}
}
2- 枚举类型
- 枚举定义了一个通用类型的一组相关的值,使你可以在你的代码中以一个安全的方式来使用这些值。
- 在 C/OC 语言中枚举指定相关名称为一组整型值
- Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值.也可以提供一个值是字符串,一个字符,或是一个整型值或浮点值
- 枚举类型的语法
- 使用enum关键词并且把它们的整个定义放在一对大括号内
- case关键词表明新的一行成员值将被定义
- 不像 C 和 Objective-C 一样,Swift 的枚举成员在被创建时不会被赋予一个默认的整数值
- 在上面的CompassPoints例子中,North,South,East和West不是隐式的等于0,1,2和3
- 所以不能像OC一样 用简写
enum CompassPoint {
case North
case South
case East
case West
}
enum Planet {
case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
- 给枚举类型赋值
- 枚举类型赋值可以是字符串/字符/整型/浮点型
- 注意如果有给枚举类型赋值,则必须在枚举类型后面明确说明具体的类型
// 1.枚举类型的赋值
enum CompassPoint : Int {
case North = 1
case South = 2
case East = 3
case West = 4
}
enum Planet {
case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
// 2.枚举类型的使用
let p = Planet(rawValue: 3)
if let p = p {
switch p {
case .Mercury:
print("Mercury")
case .Venus:
print("Venus")
case .Earth:
print("Mercury")
case .Mars:
print("Mars")
case .Jupiter:
print("Jupiter")
case .Saturn:
print("Saturn")
case .Uranus:
print("Uranus")
case .Neptune:
print("Neptune")
}
}
以前的文章
今天就先写这些了,还有其他事,还有一些小伙伴私信我,问我的微博 微信 ,我以后就统一在结尾都贴上吧!
博客:http://www.cnblogs.com/hongdongheng
微博:http://weibo.com/u/3041860075
微信:nan46825
希望小伙伴多多留言和点赞,和我交流.
写于 2016年5月18日 晚