导入框架
import UIKit
定义标识符 常量用let 变量用var
建议先定义成常量,如果需要修改再改为变量(更加安全)
let a :Int = 20
var b :Double = 1.4
语句结束如果只有一行 不用加分号,多和那个区别可以;分号分割
打印内容
print(a)
创建一个常量对象 UIView()相当于 [[UIview alloc]init]
let view :UIView = UIView()
view.backgroundColor = UIColor .redColor()
view.alpha = 1
view.hidden = false
let button = UIButton()
将整形转为浮点型
let d = 20
let f = 23.3
let fd = Double(d)
let result = f + fd
- 逻辑分支
swift中if的写法
if后面的()可以省略
判断句不再有非0/nil即真,判断句必须有明确的真假(Bool–>true/false)
if dd > 10{
print("dd大")
}else{
print("dd小")
}
let score = 90
if score > 100{
print("分数错了")
}else if score > 80{
print("优秀")
}
- 三目运算符
let mm = 8
let n = 9
let result = mm > n ? mm:n
guard 当条件为真true时,跳过if中的语句,直接执行语句组中的语句
let age = 20;
func online (age :Int){
guard age > 18 else{
print("回家找妈妈")
return
}
print("允许上网",age)
}
online(age)
- switch语句
case语句 break也可以省略 系统会默认加上
let sex = 2
switch sex{
case 0,2 : //此处可以添加多个条件
print("男的")
case 1:
print("女的")
default :
print("其他")
}
- swift中switch中的特殊用法
1.switch可以判断浮点型
2.可以判断区间
let aaa = 7.0
switch aaa
{
case 3.14 :
print("pai")
case 4..<5: //开区间
print("3到4之间的小数")
case 6...7: //闭区间
print("6到7")
default :
print("其他")
}
- 逻辑语句—— for循环
for i in 0 ..< 10 {
print(i)
}
for var d in 0..<10{
print(d)
}
for var dd in 0...5{
print(dd)
}
//在swift中如果一个标识符不需要使用,可以使用_代替
for _ in 4...8{
print()
}
swift中的dowhile循环要写成repeat while
var a = 10
repeat {
a -= 1
}while a > 0
- swift中的字符串
let str = "hello world"
遍历字符串
for c in str.characters{
print(c)
}
字符串的拼接
let str1 = "hello"
let str2 = "world"
let str3 = str1 + str2
字符串和其他标识符的拼接
let name = "jack"
let age = 18
let height = 1.87
//用反斜杠+()拼接 记住整段字符串在""内
let info = "my name is \(name) , my age is \(age) , my height is \(height)"
拼接字符串时,字符串的格式化
let min = 8
let hour = 2
let timeStr = String(format: "%02d:%02d", hour,min)
var f = 123.32342342
var ss :String = String(format: "%.2f", f)
字符串的截取
let urlString = "www.520vistadk.com"
let header = (urlString as NSString).substringToIndex(3)
//打印 www
let middle = (urlString as NSString).substringWithRange(NSRange(location: 4,length: 3))
//打印 520
let footer = (urlString as NSString).substringFromIndex(15)
//打印 com
- swift中的数组
定义不可变数组
let array = ["aaa","bbb","ccc"]
定义可变数组
var varray = Array<String>()
var varrayM = [String]()
对可变数组的基本操作
1.1添加元素
varrayM.append("aaa")
varrayM.append("bbbb")
varrayM.append("ccccc")
//["aaa", "bbbb", "ccccc"]
1.2删除元素
varrayM.removeAtIndex(2)
varrayM
//["aaa", "bbbb"]
1.3修改元素
varrayM[1] = "eeee"
varrayM
//["aaa", "eeee"]
1.4取出元素
varrayM[0]
//"aaa"
2.数组的遍历
两种方式
方式一
let array = ["aaa","bbb","ccc","ddd","eee"]
for i in 0..<array.count{
print(array[i])
}
方式二
for strS in array{
print(strS)
}
3.数组的合并
//注意:相同类型的数组才可以进行合并,不同类型不能相加合并,而且注意合并并不能去重
let array1 = ["aaa","vvv","ddd"]
let array2 = ["ddd","ccc","ggg"]
let array3 = array1 + array2
//打印["aaa", "vvv", "ddd", "ddd", "ccc", "ggg"]
- 字典
1.定义字典
1>定义不可变字典:let修饰
系统会自动判断后面的[]存放的是键值对,还是一个个的元素
2>定义可变字典:var修饰
var vDict1 = Dictionary<String,NSObject>()
var vDict2 = [String:NSObject]()
//一般用anyObject更合适,指定类型 NSobject一般用于创建对象
var vDict3 = [String:AnyObject]()
2.对可变字典的基本操作
var vDict = [String:AnyObject]()
//2.1添加元素
vDict["name"] = "jack"
vDict["height"] = 1.86
vDict["age"] = 18
vDict["weight"] = 70
vDict
//2.2删除元素
vDict.removeValueForKey("name")
vDict
//2.3修改元素
vDict["name"] = "rose"
vDict
//2.4获取某一个元素
vDict["age"]
3.遍历字典
//3.1遍历字典中的key
for key in vDict.keys{
print(key)
}
//3.2遍历字典中所有的value
for value in vDict.values{
print(value)
}
//3.3遍历所有键值对
for (key,value) in vDict{
print(key,value)
}
4.合并字典
//即使类型一致,也不能相加合并。同数组不同
let dictD = ["name":"vista","age":"18","height":"1.85"]
//注意 只能往可变字典中合并
var dictM = ["name":"haha","phone":"121"]
for (key,value) in dictD{
dictM[key] = value
}
dictM
//输出
//["height": "1.85", "age": "18", "phone": "121", "name": "vista"]
- 元组
使用元组
//元祖的基本写法
let info = ("jack",18,1.88)
info.0
info.1
//可以给每一个元素起别名
//注意此处和字典的区别,前面的并不是key(不是字符串""),而是一个别名
let inf = (name:"jack",age:18,height:1.87)
inf.age
inf.height
inf.name
inf.1
//元祖中元素的别名,就是元祖的名称
let (name,age,height) = ("rose",16,1.76)
name //输出 "rose"
age //输出 16
height //输出 1.76
- 可选类型
你想给一个类型赋值为nil,但是nil也是一个特殊的类型, 直接赋值会类型不匹配报错
swift有规定:对象中的任何属性在创建对象时,都必须有明确的初始化值
//1定义可选类型
//方式一:常规方式(不常用)
var name : Optional<String> = nil
//方式二: 语法糖(常用)
var name1 : String? = nil
//2给可选类型赋值
name = "jack"
//3取出可选类型中的值
//注意L直接取
print(name)
//取可选类型 要+ !:强制解包 但是千万注意:强制解包是非常危险的操作,如果可选类型为nil,强制解包系统会崩溃 建议:在强制解包前,先对可选类型进行判断,判断是否为nil
if name != nil{
print(name!)
}
//4可选绑定
//写法一:不常用
//注意 此处系统会自动判断name是否有值,如果为空,不执行{},如果name有值,系统会自动将name解包,并且将解包后的结果赋值给tempName
if let tempName = name{
print(tempName)
}
//写法二:常用
if let name = name{
print(name)
}
可选类型的用法
//通过一个字符串创建爱你NSURL对象
//此处注意,直接建立一个字符串也是可能为空的,只要www.vsitadk潇洒.com 中间传入了中文,不识别 url就会为nil
let url :NSURL? = NSURL(string: "www.vsitadk.com")
//根据url创建爱你NSURLRequest对象
//方式一 不常用
if url != nil{
let request = NSURLRequest(URL: url!)
}
//方式二 常用
if let url =url{
let request = NSURLRequest(URL: url)//此处系统会自动判断,不为空就解包
}
- 函数
swift中的函数相当于OC中的方法
函数的格式如下
func 函数名(参数列表)-> 返回值类型{
代码块
return 返回值
}
//func 是关键字,参数列表之间可以用逗号分隔,也可以没有参数
//使用箭头“->”指向返回值类型
//如果函数没有返回值,返回值为void,并且“->”返回值类型 部分可以省略
//1.没有参数没有返回值的函数
func nomal() -> Void{
print("nomal")
}
nomal()
//也可以简化
func nomal1(){
print("简化了nomal")
}
nomal1()
//2.没有参数有返回值的函数
func readMsg() ->String{
return "get"
}
readMsg()
//3.有参数没有返回值的函数
func getMsg(msg:String) {
print("收到了\(msg)")
}
getMsg("message")
//打印 "收到了message\n"
//4.有参数有返回值的函数
func sum(num1 : Int, num2 : Int) -> Int{
return num1 + num2
}
let result = sum(1, num2: 3)