01swife基础语法
看下:oc和swife基本语法的区别(简单写下概念,有时间再来整理)
1.导入框架
import Foundation
2.定义'标示符'时必须指定该标示符是变量还是常量
int age = 20;
格式:标示符 : 类型
let : 定义常量
var : 定义变量
let age : Int = 20
var a : Double = 3.14
3.当一行语句结束时,不再需要写;
但是:如果一行中有多条语句,则需要通过;将其分割.
注意:不建议一行中写多条语句
4.打印不再使用NSLog()
而是使用:print
OC : @"Hello World"
Swift : "Hello World"
import Foundation
2.定义'标示符'时必须指定该标示符是变量还是常量
int age = 20;
格式:标示符 : 类型
let : 定义常量
var : 定义变量
let age : Int = 20
var a : Double = 3.14
3.当一行语句结束时,不再需要写;
但是:如果一行中有多条语句,则需要通过;将其分割.
注意:不建议一行中写多条语句
4.打印不再使用NSLog()
而是使用:print
OC : @"Hello World"
Swift : "Hello World"
print("Hello World")
/********** 1.常量和变量的基本使用 **********/
var age : Int = 20
age = 25
let π : Double = 3.14
π = 5.22
/********** 2.常量和变量的使用注意 **********/
注意点:
1> 在开发中优先使用常量,只有在需要修改时,在let改var.(数据更加安全)
2> 常量的意思:指向的对象不可用修改(指针不可以修改)
可以通过指针拿到对象,修改内部的属性
在swift中创建对象.类()
let view : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
错误写法
view = UIView()
view.backgroundColor = UIColor.redColor()
在swift中使用枚举:类型.具体的类型
let btn : UIButton = UIButton(type: UIButtonType.ContactAdd)
btn = UIButton()
btn.center = CGPoint(x: 50, y: 50)
var age : Int = 20
age = 25
let π : Double = 3.14
π = 5.22
/********** 2.常量和变量的使用注意 **********/
注意点:
1> 在开发中优先使用常量,只有在需要修改时,在let改var.(数据更加安全)
2> 常量的意思:指向的对象不可用修改(指针不可以修改)
可以通过指针拿到对象,修改内部的属性
在swift中创建对象.类()
let view : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
错误写法
view = UIView()
view.backgroundColor = UIColor.redColor()
在swift中使用枚举:类型.具体的类型
let btn : UIButton = UIButton(type: UIButtonType.ContactAdd)
btn = UIButton()
btn.center = CGPoint(x: 50, y: 50)
view.addSubview(btn)
/********** 3.数据类型 **********/
let a : Int = 20
let b : Double = 3.44
swift中类型推导
如果一个标示符在定义时有直接赋值,那么可以根据后面赋值的类型,来推导出前面标示符的类型
那么这个时候,前面标示符的(: 类型)可以省略
可以通过快捷键:option+鼠标左键,来查看标示符的类型
var a = 20
a = 1.44
var b = 3.14
swift中的基本运算
在swift中,进行运算,必须保证类型是一致
因为:swift中没有隐式转化
将Double类型转成Int类型的方法:Int(Double类型标示符)
将Int类型转成Double类型的方法:Double(Int类型标示符)
let c = Int(b) + a
print(c)
var d = Double(a) + b
let b : Double = 3.44
swift中类型推导
如果一个标示符在定义时有直接赋值,那么可以根据后面赋值的类型,来推导出前面标示符的类型
那么这个时候,前面标示符的(: 类型)可以省略
可以通过快捷键:option+鼠标左键,来查看标示符的类型
var a = 20
a = 1.44
var b = 3.14
swift中的基本运算
在swift中,进行运算,必须保证类型是一致
因为:swift中没有隐式转化
将Double类型转成Int类型的方法:Int(Double类型标示符)
将Int类型转成Double类型的方法:Double(Int类型标示符)
let c = Int(b) + a
print(c)
var d = Double(a) + b
d = Double(a) * b
/********** 4.分支语句 **********/
if语句
1> 判断句可以不加()
2> 判断句结果必须是一个真假值
let a = 20
let flag = a < 10
示例一
if a > 10 {
print("a大于10")
} else {
print("a小于等于10")
}
示例二
let score = 87
if score < 60 {
print("不及格")
} else if score < 70 {
print("几个")
} else if score < 90 {
print("良好")
} else if score <= 100 {
print("良好")
} else {
print("其他")
}
三目运算符
let age = 20
let result = age >= 18 ? "可以上网" : "回家去"
print(result)
guard(守卫)
- (void)
/*
func onLine(age : Int) -> Bool {
if (age >= 18) {
print("可以上网")
return true
} else {
print("不能上网")
return false
}
}
*/
func onLine(age : Int) -> Bool {
guard age >= 18 else {
如果判断句为假,会执行else
print("回家找妈妈拿身份证")
return false
}
如果为真,继续执行
print("可以留下来上网")
return true
}
onLine(17)
1> 判断句可以不加()
2> 判断句结果必须是一个真假值
let a = 20
let flag = a < 10
示例一
if a > 10 {
print("a大于10")
} else {
print("a小于等于10")
}
示例二
let score = 87
if score < 60 {
print("不及格")
} else if score < 70 {
print("几个")
} else if score < 90 {
print("良好")
} else if score <= 100 {
print("良好")
} else {
print("其他")
}
三目运算符
let age = 20
let result = age >= 18 ? "可以上网" : "回家去"
print(result)
guard(守卫)
- (void)
/*
func onLine(age : Int) -> Bool {
if (age >= 18) {
print("可以上网")
return true
} else {
print("不能上网")
return false
}
}
*/
func onLine(age : Int) -> Bool {
guard age >= 18 else {
如果判断句为假,会执行else
print("回家找妈妈拿身份证")
return false
}
如果为真,继续执行
print("可以留下来上网")
return true
}
onLine(17)
onLine(20)
/********** 分支语句--switch **********/
/************ 1.switch的简单使用 ************/
sex为0,表示男 sex为1,表示女
let sex = 54
switch (sex) {
case 0:
NSLog(@"男")
break
}
switch sex {
case 0:
print("男")
case 1:
print("女")
default:
print("其他")
}
/************ 2.switch的简单使用补充 ************/
补充一:有case穿透,可以在语句后加fallthrough
switch sex {
case 0:
print("男")
fallthrough
case 1:
print("女")
default:
print("其他")
}
补充二:case中可以判断多个条件
如果想判断多个条件,可以通过,分割
switch sex {
case 0, 1:
print("正常人")
default:
print("其他")
}
/************ 3.switch的特殊用法 ************/
特殊用法一:switch可以判断浮点型
let a = 3.14
switch a {
case 3.14:
print("π")
default:
print("非π")
}
特殊用法二:switch可以判断字符串
let m = 20
let n = 25
let opration = "*"
var result : Int
switch opration {
case "+":
result = m + n
case "-":
result = m - n
case "*":
result = m * n
case "/":
result = m / n
default:
print("非法操作符")
}
特殊用法三:switch中可以判断区间
let score = 88
区间:
闭区间:0~10 [0, 10] swift: 0...10
开区间:0~9 [0, 10) swift: 0..<10
switch score {
case 0..<60:
print("不及格")
case 60..<70:
print("及格")
case 70..<90:
print("良好")
case 90...100:
print("优秀")
default:
print("不合理的分数")
sex为0,表示男 sex为1,表示女
let sex = 54
switch (sex) {
case 0:
NSLog(@"男")
break
}
switch sex {
case 0:
print("男")
case 1:
print("女")
default:
print("其他")
}
/************ 2.switch的简单使用补充 ************/
补充一:有case穿透,可以在语句后加fallthrough
switch sex {
case 0:
print("男")
fallthrough
case 1:
print("女")
default:
print("其他")
}
补充二:case中可以判断多个条件
如果想判断多个条件,可以通过,分割
switch sex {
case 0, 1:
print("正常人")
default:
print("其他")
}
/************ 3.switch的特殊用法 ************/
特殊用法一:switch可以判断浮点型
let a = 3.14
switch a {
case 3.14:
print("π")
default:
print("非π")
}
特殊用法二:switch可以判断字符串
let m = 20
let n = 25
let opration = "*"
var result : Int
switch opration {
case "+":
result = m + n
case "-":
result = m - n
case "*":
result = m * n
case "/":
result = m / n
default:
print("非法操作符")
}
特殊用法三:switch中可以判断区间
let score = 88
区间:
闭区间:0~10 [0, 10] swift: 0...10
开区间:0~9 [0, 10) swift: 0..<10
switch score {
case 0..<60:
print("不及格")
case 60..<70:
print("及格")
case 70..<90:
print("良好")
case 90...100:
print("优秀")
default:
print("不合理的分数")
}
-------------------------------------------------------------
for循环
1.写法一:常规写法
for (var i = 0; i < 10; i++) {
print(i)
}
for var i = 0; i < 10; i++ {
print(i)
}
2.写法二:区间for循环
for i in 0..<10 {
print(i)
}
for i in 0...10 {
print(i)
}
3.写法三:如果for循环中没有用到i,可以将i用_代理
for _ in 0..<10 {
print("hello world")
for (var i = 0; i < 10; i++) {
print(i)
}
for var i = 0; i < 10; i++ {
print(i)
}
2.写法二:区间for循环
for i in 0..<10 {
print(i)
}
for i in 0...10 {
print(i)
}
3.写法三:如果for循环中没有用到i,可以将i用_代理
for _ in 0..<10 {
print("hello world")
}
-------------------------------------------------------------
while循环
1> 不要()
2> 判断句必须有真假(Bool)
var a = 10
while a < 20 {
a++
print("111")
}
do while循环
注意:在do while循环循环中,不要再使用do.而是使用repeat代替do
repeat {
a++
print("222")
} while a < 30
1> 不要()
2> 判断句必须有真假(Bool)
var a = 10
while a < 20 {
a++
print("111")
}
do while循环
注意:在do while循环循环中,不要再使用do.而是使用repeat代替do
repeat {
a++
print("222")
} while a < 30
-------------------------------------------------------------
1.String的遍历
var str = "Hello, playground"
for s in str.characters {
print(s)
}
2.String的拼接
1>两个字符串之间的拼接
let str1 = "my name is"
var str2 = " why"
str2 = str1 + str2
2>字符串和其他类型的拼接
let age = 18
let height = 1.88
在字符串中拼接其他类型的变量/常量
格式:\(变量/常量名字)
let str3 = "age is \(age), height is \(height)"
3>字符串的格式化
2:3 -> 02:03
let min = 2
let second = 3
let time = "0\(min):0\(second)"
let time = String(format: "%02d:%02d", arguments: [min, second])
3.String的截取
let urlString = "www.520it.com"
提示:不要使用String方法截取.index非常不好创建
urlString.substringFromIndex(index: Index)
String转成NSString,只需要在String后面跟上:as NSString
let prefixString = (urlString as NSString).substringToIndex(3)
let middelString = (urlString as NSString).substringWithRange(NSRange(location: 4, length: 5))
var str = "Hello, playground"
for s in str.characters {
print(s)
}
2.String的拼接
1>两个字符串之间的拼接
let str1 = "my name is"
var str2 = " why"
str2 = str1 + str2
2>字符串和其他类型的拼接
let age = 18
let height = 1.88
在字符串中拼接其他类型的变量/常量
格式:\(变量/常量名字)
let str3 = "age is \(age), height is \(height)"
3>字符串的格式化
2:3 -> 02:03
let min = 2
let second = 3
let time = "0\(min):0\(second)"
let time = String(format: "%02d:%02d", arguments: [min, second])
3.String的截取
let urlString = "www.520it.com"
提示:不要使用String方法截取.index非常不好创建
urlString.substringFromIndex(index: Index)
String转成NSString,只需要在String后面跟上:as NSString
let prefixString = (urlString as NSString).substringToIndex(3)
let middelString = (urlString as NSString).substringWithRange(NSRange(location: 4, length: 5))
let subfixString = (urlString as NSString).substringFromIndex(10)
-------------------------------------------------------------
数组:Array
可变数组 var修饰
不可变数组 let修饰
let names : Array<String> = @[@"why"]
1.不可变数组
数组定义的写法一:
let names : Array<String> = ["why", "yz","ljz", "across"]
names[0]
数组定义的写法二:常用
let names1 : [String] = ["why", "yz","ljz", "across"]
数组定义的写法三:类型推导
let names2 = ["why", "yz","ljz", "across"]
可变数组
数组定义的写法一:
var names3 : [String] = ["why", "yz"]
names3.append("ljz")
var names4 : [String] = Array()
var names4 : [String] = [String]()
可变数组 var修饰
不可变数组 let修饰
let names : Array<String> = @[@"why"]
1.不可变数组
数组定义的写法一:
let names : Array<String> = ["why", "yz","ljz", "across"]
names[0]
数组定义的写法二:常用
let names1 : [String] = ["why", "yz","ljz", "across"]
数组定义的写法三:类型推导
let names2 = ["why", "yz","ljz", "across"]
可变数组
数组定义的写法一:
var names3 : [String] = ["why", "yz"]
names3.append("ljz")
var names4 : [String] = Array()
var names4 : [String] = [String]()
names4.append("why")
-------------------------------------------------------------