Swift-day1内容提要
- 1.Swift介绍
- 2.Swift体验
- 3.常量 变量 重要
- 4.数据类型
- 5.逻辑分支 guard
- 6.循环使用
Swift介绍
- 2014年Apple WWDC推出,撰写OS X与iOS应用程序
- 特点:
- 综合了OC JavaScript C# Python等语言
- 简单,简洁,方便;可与OC混编
- 类似java的名字空间namespace、泛型generic、运算符重载operator overloading
- 要求:先掌握初级部分语法,高阶部分:参考书喵神的
Swift体验
- 环境:Xcode8 Swift3.0,使用playgroud编写
- playgroud-Xcode6开始(同年出现的Swift),方便Swift学习,以前项目中哪个部分报错即为更新部分,不需要运行就能看到结果
- 练习Swift语言推荐使用playground
- 练习1:导入框架import 框架名
- 练习2:定义标识符
- 1️⃣必须明确是一个变量var还是常量let
- 2️⃣let/var 标识符名称 : 标识符类型 = 赋值
- 练习3:Swift特性:一行中若只有一条语句,分号可省略
- 练习4:打印print()不需要@,不需要占位符%
<pre>
// 1.Swift中如何框架
import UIKit
import Foundation
// 2.如何定义标识符
let sex:String = "girl"
var age = 19
var height:Double = 1.60
age = 20
//sex = "boy"
// 3.在swift中如何一行代码中只有一条语句, 那么语句结束时 ; 可以省略
// 4.swift中如何打印内容
print(sex)
print(height)
print("Hello World!")
</pre>
常量与变量
- 变量var 常量let
- 注意点
- 1️⃣开发中,优先使用常量,若标识符需要修改,再使用变量
- 目的:防止重要数据在其他地方不小心被修改
- 2️⃣常量的本质:指向的内存地址不可修改,但是可以通过内存地址找到对应的对象,之后修改对象的属性
- 练习1:创建对象let view : UIView = UIView()
- 相当于view不能再储存一个新对象UIView(),只能修改已创建对象的属性(颜色 透明度等)
- 1️⃣开发中,优先使用常量,若标识符需要修改,再使用变量
- 练习2:创建UIView对象,并在里面添加UIButton
- 创建对象直接类名加(),可以在playgroud眼睛出查看
- 调用方法,统一使用点语法
- 枚举类型:1️⃣若知道枚举类型,直接使用点语法2️⃣若不知道枚举类型,则需要枚举类型.具体类型
<pre>// 使用注意
// 1.在开发中优先使用常量, 防止不小心修改掉之前赋的值
// 2.常量的本质: 指向的内存地址不可以修改, 但是可以通过内存地址找到对应的对象, 之后修改对象内部的属性
let view : UIView = UIView()
let btn = UIButton()
view.alpha = 0.5 //view的属性可以改
btn.frame = CGRectMake(0, 0, 30, 30)
view.backgroundColor = UIColor.redColor()
//注意:调用方法都是用点语法
var label = UILabel()
label = UILabel()
//变量可以更改 label指针指向了2个不同的对象,更改后指向最近的一次修改对象</pre>
数据类型
- 整型、浮点、对象、结构体等
- 1️⃣默认Int等价于NSInteger、 Uint等价于NSUInteger
- 2️⃣Float:32位浮点 、Double:64位(浮点型默认)
-
类型推导--重要
- 1️⃣定义一个标识符时,直接给其进行赋值,那么可以将标识符后面的类型省略
- 2️⃣编译器会根据赋值类型,推导出标识符类型
- 技巧:option+左键 点击标识符可以查看其类型
<pre>let btn = UILabel()
var π = 3.14
π = 4 //初始化时确定是Double
var num = 8
num = 9.99 //初始化时确定是Int则无法改成Double
</pre>
基本运算
- 规则:必须保证类型一致才能进行运算,因为Swift中没有隐式转换
- OC隐式转换:默认将整型转成浮点型再运算
- Swift强制转换:转换类型(需转换的标识符)
- 注意:CGFloat与Double不是一个类型
<pre>let a = 3.51
let b = 4
//let c = a + b //必须是相同类型
//要想计算必须进行强制类型转换.
//不存在隐式转换
let result = a + Double (b)
let result1 = b + Int(a)
</pre>
逻辑分支
- if/switch/三目运算符等
- OC中有非空即真
<pre>
//三目运算
var a = 13
var b = 21
let result = a > b ? a : b</pre>
- OC中有非空即真
if
- if的使用-OC与Swift的区别
- 1️⃣if后小括号可以省略
- 2️⃣没有非0(nil)即真
- 3️⃣Swift表示真假:bool(true false)
- 练习1:a是否大于0、a是否不等于0
- else if
- 练习2:判断分数属于哪个成绩等级ABCDE
<pre>let i = 10
if i > 0
{
print("i大于0")
}
else
{
print("i小于等于0")
}
//-------------
if i != 0
{
print("i不等于0")
}
//-------------
let score = 55
if score < 80 || score >= 60
{
print("及格")
}else if score <= 100 || score >= 80
{
print("优秀")
}
else
{
print("不及格")
}</pre>
guard---非常重要
- 介绍:Swift2.0新增,类似于if
- 目的:if的地方都能用guard替换,增强代码可读性
- guard 判断句 else{ return/continue/break }
- 练习3:利用函数判断某人是否成年是否带身份证是否带起,多重if嵌套使用guard更加简洁易读
<pre>let age = 22
let sex = 1
func loving(age : Int) -> Void {
guard age >= 18 else
{
print("不可以谈恋爱")
return
}
print("可以谈恋爱")
guard sex == 1 else
{
print("boy")
return
}
print("girl")
}
loving(age)</pre>
switch
- 特点:好用,Swift中苹果增强了switch,
- 基本使用
- OC中,一般判断整型,必须加break,否则会case穿透
- 区别:
- 1️⃣switch后的()可以省略
- 2️⃣case语句结束后,可以不加break,不会产生穿透,系统默认加上break
- 补充点
- 1️⃣Swift中的case可以判断多个条件,逗号隔开eg:case 0,1
- 2️⃣若希望产生case穿透,case结束时加上fallthrough
- 3️⃣可以判断其他类型 OC中只能判断整型
- a.浮点型
- b.字符串 eg:加减乘除
- c.区间类型
- 区间通常是指数字区间 eg 0-100
- 类型:
- ①半开半闭0~9 0..<10
- ②闭区间0...9
- 注意没有0<..<10这种写法
<pre>
//一般用法
let animal = 0
switch animal
{
case 0 :
print("猫科")
fallthrough
case 1:
print("亚洲")
fallthrough
case 2:
print("哺乳动物")
fallthrough
default:
print("亚洲猫科哺乳动物")
}
//特殊用法:1️⃣浮点型2️⃣字符串3️⃣区间
let π = 3.14
switch π
{
case 3.14:
print("是π")
default:
print("不是π")
}
//------------------
let a = 12.0
let b = 15.0
let oper = "/"
var result = 0.0
switch oper
{
case "+":
result = a + b
print(result)
case "-":
result = a - b
print(result)
case "*":
result = a * b
print(result)
case "/":
result = a / b
print(result)
default :
print("错误操作")
}
//------------------
let value = -12
switch value
{
case 60..<70:
print("及格")
case 70..<80:
print("中等")
case 80..<90:
print("良好")
case 90...100:
print("优秀")
default :
print("重修")
}</pre>
for
- Swift3.0中已经不支持原先OC中使用变量进行自加循环了,不支持++ --运算,在Swift2.0+系列还可以使用,
- Swift中for循环现在只支持区间遍历
- 1️⃣for i in 区间{ } 区间可以是半开半闭或闭区间
- 闭包中可以拿到i
- 2️⃣Swift开发中,如果一个变量、常量暂时不会使用,那么可以用_来替代
- for _ in 区间 { }
<pre >//1. OC写法 -- 不推荐使用
//for var i = 0 ; i < 10 ; i += 1
//{
// print(i)
//}
//------------------------------
//2. 区间遍历 -- 推荐使用
//2.1 半开半闭区间
for var i in 0..<10
{
print(i)
}
print("---------------")
//2.2 闭区间
for var j in 0...9
{
print(j)
}
print("---------------")
// 3.如果一个标识符不需要使用, 那么可以通过 _ 来代替
for _ in 0...5
{
print("大美女")
}</pre>
- for _ in 区间 { }
while&do-while
- while在swift与OC区别
-
1️⃣while后面()可以省略
-
2️⃣没有非0(nil)即真 bool(true false)
-
3️⃣没有do-while循环了,do变成repeat
-
4️⃣不支持++ --了,使用+= -=
var str = 10 while str > 0 { str -= 1 print(str) } // 2.do while循环 // 区别: 不再使用do while --> repeat while var count = 0 repeat{ print(count) count += 1 }while count < 10
-
网友评论