Swift入门基础
- 常量&变量
1.var 定义变量,设置之后可以修改
2.let 定义常量,设置之后不可以修改
3.语句末尾不用使用 ;
4.在 Swift 中使用 print() 替代 OC 中的 NSLog
// 定义变量
var i = 10
print(i)
i = 15
print(i)
let j = 20
// 常量一经定义不能自改数值
print(j)
- 定义 OC 对象
1.在 Swift 中要实例化一个对象可以使用 类名() 的格式,与 OC 中的 alloc/init 等价
2.当前对象的属性,不需要使用 self.
// 实例化视图
let v = UIView()
// 设置背景颜色
v.backgroundColor = UIColor.redColor()
// 添加到根视图
view.addSubview(v)
- if语句
1.Swift 中没有 C 语言中的非零即真概念
2.在逻辑判断时必须显示地指明具体的判断条件
3.if 语句条件的 () 可以省略,但是 {} 不能省略
let i = 10
if i > 0 {
print("OK")
}
- 数组
1 数组使用 [] 定义,这一点与 OC 相同
2 如果初始化时,所有内容类型一致,择数组中保存的是该类型的内容
3 如果初始化时,所有内容类型不一致,择数组中保存的是 NSObject
// 数组中保存的都是字符串
let arr = ["zhangsan", "lisi"]
// 数组中保存的是 NSObject
let arr1 = ["zhangsan", 1]
4.定义特定类型的数组
// 定义只能保存字符串类型数组
var array: [String]
- 字典
/// 定义并实例化字典 String:可以是字符串类型 AnyObject 相当于OC的id类型
var dict = [String: AnyObject]()
dict["name"] = "zhangsan"
dict["age"] = 18
print(dict)
// 设置相同 key,之前的数值会被覆盖
dict["name"] = "lisi"
print(dict)
// 删除某一个 key
dict.removeValueForKey("age")
print(dict)
dict["title"] = "manager"
print(dict)
// 遍历字典(k, v可以随便写)
for (k, v) in dict {
print("\(k) -- \(v)")
}
// 合并字典
var dict2 = ["name": "wangwu", "age": 80, "title": "boss"]
for (k, v) in dict2 {
dict.updateValue(v, forKey: k)
}
print(dict)
- 字符换
1.NSString 是一个 OC 对象,性能略差
2.String 是一个结构体,性能更高
3.字符串拼接 +
//初始化一个字符串
let str1 = "zhangsan"
let str2 = "lisi"
//str1 + str2拼接字符串
print(str1 + str2)
4.格式化字符串
//for循环
for _ in 0...10 {
let str = String(format: "zhangsan - %04d", arguments: [arc4random_uniform(100)])
print(str)
}
- 函数
函数定义格式:func 函数名(参数: 参数类型…) -> 返回值 { // 代码实现 }
1.如果没有返回值, -> 返回值 可以省略
2.-> 是一个很有意思的符号
3.默认情况下,在调用函数时,第一个参数名是省略的
//有返回值(int)的函数
func sum(a: Int, b: Int) -> Int {
return a + b
}
//没有返回值的函数
func sum1(x a: Int, y b: Int){
print("%d",a+b)
}
//不带参数和返回值的函数
func prints(){
print("ok")
}
- 闭包
1.闭包定义
2.闭包简化 - 尾随闭包
3.闭包参数
4.闭包返回值
5.闭包的循环引用
weak var weakSelf = self
demo("zhangsan") { (_) -> Int in
print(weakSelf?.view.backgroundColor)
return 20
}
- 懒加载
注意:苹果很推崇使用懒加载方式创建对象,不论是oc还是Swift
定义格式:lazy var 变量: 类型 = { 创建变量代码 }()
lazy var demoView: UIView = {
let v = UIView(frame: CGRectMake(10, 10, 100, 100))
v.backgroundColor = UIColor.redColor()
return v
}()
- 着重声明一下
常量&变量的使用原则:尽量先用 let,只有需要变的时候,再用 var,能够更加安全