Swift 基本语法01-Swift简介

96
宫城良田__
2017.05.04 22:42* 字数 459
一个iOS开发初级菜鸡.png

Swift 基本语法02-"let"和"var"
Swift 基本语法03-"if let"和"guard let"
Swift 基本语法04-"switch"和"for"
Swift 基本语法05-"String"
Swift 基本语法06-数组和字典

Swift 简介

  1. Swift2014年06月WWDC大会发布
  • 2015年底开源
  • IBM开始用Swift做后台开发
  • Swift取消了预编译指令(包括宏,比如Masonry
  • 没有了中括号,和其它语言比较接近
  • 3.0 对于Foundation框架做了重大调整,去除了NS前缀
  • 将绝大部分Class转换为struct
  • 访问当前对象的属性,可以不用self.,建议:一般情况都不用。只有闭包的时候才去用
  • 取消了预编译指令
  • 自动推导:变量/常量的类型会根据=(等号)右侧代码执行结果,推导对应的类型
  • Swift 中对类型要求异常严格,不允许直接运算(不会做默认的隐式的转换,所有的类型确定,都由程序员负责)
let x = 10
let y = 10.5

print(x + y)        // 会直接报错(Binary operator '+' cannot be applied to operands of type 'Int' and 'Double')
print(x + Int(y))   // 这样不会报错,输出结果为`20`
OC 中用类型强转->(int)y
Swift 中Int(y)->结构体的构造函数
Swift 中,不存在基本数据类型,都是结构体(考虑安全性和速度,统一做了语法的调整)

1. Button 的创建

// 创建按钮
let btn = UIButton(type: .contactAdd)
view.addSubview(btn)
btn.center = view.center
btn.addTarget(self, action: #selector(clickMe), for: .touchUpInside)

// 按钮的点击事件
func clickMe(btn:UIButton) -> () {
    print(#function)
    print(btn)
}

2. View 设置背景色

let v = UIView(frame: CGRect(x: 0, y: 20, width: 100, height: 100))
// 代码设置颜色
v.backgroundColor = UIColor.red
// 颜色选择器直接设置
v.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 0, alpha: 1)
view.addSubview(v)
2.1-设置颜色.png

3. ImageView 设置图片

let imageView = UIImageView(frame: CGRect(x: 0, y: 120, width: 100, height: 100))
imageView.image = UIImage(named: "user")
imageView.image = #imageLiteral(resourceName: "user")
view.addSubview(imageView)
3.1-设置ImageView的图片.png

4. 小技巧

// MARK: - XXXXXX
4.1-标记(带横线).png
 // MARK: XXXXXX
4.2-标记(不带斜线).png
// FIXME: 准备修改XXXXXX
06.png

5. 可选项(Optional)

  • OptionalSwift的一大特色,也是Swift初学者最容易困惑的问题
  • 定义变量时,如果指定是可选的,表示该变量可以有一个指定类型的值,也可以是 nil
  • 定义变量时,在类型后面添加一个?,表示该变量是可选的
  • 变量可选项的默认值是nil
    常量可选项没有默认值,主要用于在构造函数中给常量设置初始数值
  • !代表强行解包 - 从可选值中强行获取对应的非空值,如果真的是nil,就会崩溃!程序员必须为每一个!负责
let a: Optional = 10
let b: Int? = 20

print(a)        // Optional(10)
print(b)        // Optional(20)

print(a + b)    // 不能直接相加(Value of optional type 'Optional<Int>' not unwrapped; did you mean to use '!' or '?'?)
print(a! + b!)  // 30
Swift