swift中用let定义常量,定义之后不可以修改
swift中用var定义变量,定义之后不可修改
在使用当中,建议先定义常量,如果需要修改再定义为变量
let a: Int = 10 //本质上保存的是一个内存地址
//创建一个常量对象
let view : UIView = UIView(); //创建对象
//可以修改view的属性
view.backgroundColor = UIColor.redColor()
view.frame = CGRectMake(0,0,100,100)
view.aloha = 0.5
view.hidden = true //BOOL: true false
swift中的数据类型
整形
有符号
int8:有符号8位整形
int16:有符号16位整形
int:平台相关
浮点型:
Float:32位浮点型
Double:64位浮点型
类型推导:
注意:如果在定义一个标识符,直接对这个标识符赋值,那么标识符后面的类型可以省略。
swift会自动推导出值的类型。
let a = 10 //可以进行自动类型推导,推导出a为Int整形
let b = 2.44 //Double类型
let view = UIView() //UIView类型
Swift中的基本运算
swift是强类型语言,因此swift中参与运算的类型必须保持一致,否则就会报错。
let m = 20
let n = 3.14
let result = m + n //会报错
let tempM = Double(m) //强制类型转换成Double类型
let result = tempM + n
//将浮点型转成整形:Int(标示符)
let tempN = Int(n) //强制类型转换成Int类型
逻辑分支
- if分支语句
if 判断句 {
//代码
}
//注意:swift中不再有非0即真,非空即真的概念,必须有明确的真假
//判断句的小括号可以省略,加上也不错算
if a > 0 {
print("a大于0")
} else {
print("a小于等于0")
}
- switch case分支语句
//区别
1.switch后面的小括号可以省略
2.break也可以省略,系统会帮我们加上去,不会发生case穿透
switch age{
case 0:
print("年龄0")
case 1:
print("年龄1")
}
基本用法的补充:如果希望某一个case中产生case穿透,那么这个时候可以在case结束后跟上fallthrough
case后面可以判断多个条件,多个条件以,分隔
switch age{
case 0,1:
print("年龄0或者1")
case 2:
print("年龄2")
}
特殊用法:
可以判断浮点型
let a = 3.14
switch a {
case 3.14:
print("π")
default:
print("非π")
}
可以判断字符串
let m = 20
let n = 10
let options = "+"
switch options {
case "+":
print(m + n)
case "-":
print(m - n)
}
switch可以判断区间
swift中的区间常见有两种
开区间:0..<10 表示0-9,不包含10
闭区间:0..10表示0-10,包含10
let score = 88
switch score{
case 0..<60:
print("不及格")
case 60..100:
print("及格")
}
- 三目运算符
let result = m > n ? m : n
//和之前用法完全一致
- guard的使用
guard与if语句非常相似,guard语句必须带有else语句
guard 条件表达式 else{
//条件语句
break; //条件语句为false时执行else语句中的内容,跳转语句一般是return,break,continue,和throow
}
条件为真会执行该块代码
//具体使用,guard只能在函数中使用
let age = 10;
func demo(age : Int){
guard age >= 18 else{
print("不能去上网")
return //必须加跳转语句
}
print("可以去上网")
}
for循环的使用
for var i = 0; i < 10; i++{
print(i)
}
//for in写法
for i in 0..<10 {
print(i)
}
//在swift中如果一个标志符不需要使用,可以使用_来代替
for _ in 0...9{
print("hello word")
}
Swift字符串
在Swift中字符串类型是String,定义字符串不加@,直接用""
定义字符串:
//1.定义字符串
let opration = "+"
let str = "hello world"
//2.遍历字符串
for c in str.characters{
print(c)
}
//3.字符串的拼接
let str1 = "wly"
let str2 = "ggg"
let str3 = str1 + str2 //拼接之后的
//4.字符串和其它标识符之间的拼接
let name = "wly"
let age = 18
let height = 1.88
let person = "my name is wly, my age is \(age), my height is \(height)"
//5.字符串格式化
//6.字符串的截取
let urlString = "www.520it.com"
//将string类型转成NSString类型
let header = (urlString as NSString).substringToIndex(3)
Swift中类的使用
类的定义
class 类名 : superClass{
}
注意:定义的类,可以没有父类,那么该类是rootClass
class Person {
var age : Int = 0
}
let p = Person()
p.age = 10
//继承自某一属性
class Person : NSObject{
var age : Int = 0
//如果是重写父类方法,必须加上override
override func setValue(value : AnyObject?, forUndefinedKey key: String){}
}
p.setValuesForKeyWithDictionary(["age" : 18, "name": "wly"])
定义类的属性
Swift中的属性有多种
存储属性:存储实例的常量和变量
计算属性:通过某种方法计算出来的属性
类属性:与整个类自身相关的属性
//定义存储属性
class Student : NSObject {
//定义属性
//定义存储属性
var age :Int = 0
var name : String?
}
let stu = Student()
stu.age = 10
stu.name = "xxs"
print(stu.age)
if let name = stu.name {
print(name)
}
//
class Student : NSObject {
//定义属性
//定义存储属性
var age :Int = 0
var name : String?
var mathScore : Double = 0.0
var chineseScore : Double = 0.0
//定义计算属性,在swift中,如果使用当前对象的某一个属性,或者调用当前对象的某一个方法时,可以直接使用,不需要加self
var averageScore:Double {
return (mathScore + chineseScore) * 0.5
}
}
let stu = Student()
stu.age = 10
stu.name = "xxs"
stu.mathScore = 78
stu.chineseScore = 59.9
print(stu.averageScore)
//
class Student : NSObject {
//定义属性
//定义存储属性
var age :Int = 0
var name : String?
var mathScore : Double = 0.0
var chineseScore : Double = 0.0
//定义计算属性,在swift中,如果使用当前对象的某一个属性,或者调用当前对象的某一个方法时,可以直接使用,不需要加self
var averageScore:Double {
return (mathScore + chineseScore) * 0.5
}
//定义类属性
static var courseCount : Int = 0
}