swift语言发表已经快四年时间了,现在也已经更新到swift4了,相对已经稳定,同时Objective-C向swift的语言转换,也是IOS开发的大势所趋,为了不被时代所抛弃,也为了增加自己的知识储备量,决定开始学习swift
曾经在学习Objective-C的时候也是通过白胡子老头的“斯坦福大学公开课”学习的,所以在想要学习swift的时候,第一时间想到的也是这个老先生的课程,没想到搜索了一下,还真的有(点这里),只不过是swift3的课程,不过也没什么关系,因为swift4跟swift3相比,更新的东西并不多 ,不妨可以先学习swift3,当语法与基础知识等都了解了,能够顺利使用了之后再去了解swift4的相关更新也不迟。
由于每天下班比较晚,所以可能更新每天学习的东西比较少,时间也不固定,但是重在积累吧。
也没发过什么博客,所以对排版也没什么心得,主要用于记录自己的学习轨迹和知识点,望海涵!
在每一项知识点后边都会挂上一个此相关知识点的比较详细的解释的链接,以供之后查看
变量和常量的声明 相关详细链接
1、变量的声明
var digit : String
注:一般可以取消定义的类型,写成var digit
,因为swift会根据上下文进行类型推到
2、常量的声明
let digit
在声明时区分变量和常量很重要的原因是,当你改变一个常量的时候,编译器会给你报错,并且能确定值在之后一直不会变化的时候,就定义为常量
方法函数 相关详细链接
下方就是swift方法的定义。例子:
① func drawHorizontalLine(from startX: Double, to endX:Double, using color: UIColor) -> String{
distance = endX - startX
}
② @IBAction func touchDigit(_ sender: UIButton) {
}
- 1 、①中的
startX,endX,color
为方法的形参:函数内部的形参名称,只在函数内部使用,例如方法内部的:distance = endX - startX
- 2、①中的
Double,UIColor
是这个参数的类型 - 3、①中的
from,to,using
是方法外部使用的实参标签-
_
表示不需要标签,调用时不用写标签。例如②方法可以这样调用:touchDigit(someButton))
。一般在标签名存在于函数名或者参数类型中时,使用_
。补充:_
一般最多用于第一个参数的标签。 - 调用函数时,使用的是这些外部名称。例如:
drawHorizontalLine(from: 5.0, to: 8.0, using: UIColor.blue)
- 并且这些外部实参标签在调用时是不可缺少的。例如:
drawHorizontalLine(5.0, 8.0, UIColor.blue)是不允许的
-
- 4、-> String为返回值
字符串的拼接 相关详细链接
使用\()
进行拼接,括号中可以放任何能用字符串标识的内容。例如:
var digit : String = "example"
print("\(digit) was called")
可选类型 相关详细链接
- 1、可选类型值有两个值:有值和缺省值,当有值的时候,会存在一个关联值,关联值可以是String,Double等等等等,当只想获取其关联值的时候,需要进行解包
- 2、创建的UILabel属性是可选的
var display: UILabel!
,是因为当用户界面刚显示出来的时候,系统需要一点时间关联控件和代码。所以刚加载的时候,它是缺省值的。关联完之后就是有值的了,之后一直都是有值的,这就是这个“!”的作用 - 3、当赋值给可选类型的时候,并不需要解包,直接赋值就可以了
- 4、另一种安全的解包方式,推荐使用!
//(如果sender.currentTitle有值,那么把关联值赋值给mathematicalSymbol)
if let mathematicalSymbol = sender.currentTitle {
print(mathematicalSymbol)
}
类型转换 相关详细链接
这的类型转换只记录最基础的一种,其他的方式再相关详细链接中查看
把其他类型转换成字符串类型:String(Double.pi)
其他基础类型同理
计算型属性 相关详细链接
把代码放在属性的后面的大括号里,就能实时计算变量的值,而不是依靠存储的值.
所以可以有代码负责计算获取的值(get),也可以有代码处理赋值的情况(set)
例如:
var displayValue : Double {
get {
//当displayValue在等号右边的时候,调用这里
return Double(display.text!)!
}
set {
//当displayValue在等号左边的时候,调用这个(newValue就代表要赋值的值,它和变量类型相同)
display.text = String(newValue)
}
}
杂项
- 1、swift要求所有属性都要初始化,但是可选类型是例外,因为可选类型可以不赋值,因为初始化的时候被自动初始化为nil,nil表示缺省值。当然也可以手动初始化给一个初始值,但是如果没有的话,就是缺省值