swift 基本语法

基本数据类型

  • 导入头文件
import UIKit
  • let定义常量 不可改变
let a = 20
print(a)
  • 定义变量
var b = 10
  • 强制类型转换将 double 类型 c 转换成 int 整形 d
let c = 5.32
let d = Int(c)
  • if使用
    省略小括号判断句不再有非0/nil即真,必须有确真假true/false
let e = 2
if e > 0 {
    print("e大于0")
}else{
    print("e小于等于0")
}
  • 三目运算符
let a1 = 10
let a2 = 11
let result = a1 > a2 ? a1 : a2
  • guard 用法 swift 特有
    如果age大于等于18,就往下执行(执行print("留下来")),不看else里面的。如果age小于18,就执行else括号里面的代码(print("回家找妈妈"),然后return)
let age = 20
let money = 10
func online(age : Int, money : Int) {
    guard age >= 18 else {
        print("回家找妈妈")
        return
    }

    guard money > 0 else {
        print("没钱,回家找妈妈")
        return
    }
    print("留下来")
}
online(age, money: money)
  • for循环
//基本写法(很少用)
for var i = 0;i < 10; i++ {
    print(i)
}
//常规写法
for i in 0 ..< 10 {
    print(i)
}
//用_来代替不需要赋值的变量,这样遍历速度也会提高
for _ in 0...9 {
    print("我打印了10次")
}

字符串

  • 1.定义字符串
let str = "hello world"
  • 2.遍历字符串中字符
for c in str.characters {
    print(c)
}
  • 3.字符串的拼接
  • 3.1.字符串之间的拼接
let str1 = "今天天气"
let str2 = "非常好"
// NSString stringwithFormat:@"%@%@", str1, str2]
let result = str1 + str2
  • 3.2.字符串和其他标识符之间的拼接
let age = 18
let name = "why"
let height = 1.88
//NSString stringwhithFor
// 拼接其他标识符的格式: \(标识符的名称)
let info = "my name is \(name), age is \(age), height is \(height)"
  • 3.3.字符串的格式化:时间显示 (例如02:23)
let min = 3
let second = 04
//let timeStr = "0\(min):0\(second)"
let timeStr = String(format: "%02d:%02d", arguments: [min, second])
  • 4.字符串的截取
let urlString = "www.baidu.com"
// 将String类型转成NSString类型 string as NSString
let header = (urlString as NSString).substringToIndex(3)
let middle = (urlString as NSString).substringWithRange(NSRange(location: 4, length: 5))
let footer = (urlString as NSString).substringFromIndex(10)

数组

swift的数组或者字典中,可以存基本数据类型,而不是OC那样存对象

  • 1.数组的定义
不可变数组(let)和可变数组(var)
1>不可变数组
let array = ["why", "lmj", "lnj", "yz"]
  • 2.可变数组
//String为声明数组中的元素类型
var arrayM = [String]()
  • 2.对可变数组的操作(增删改查)
  • 2.1.添加元素
arrayM.append("why")
arrayM.append("yz")
arrayM.append("lmj")
arrayM.append("lnj")
  • 2.2.删除元素
//这个方法会有返回值,返回你删除的
arrayM.removeAtIndex(0) 
//若查看数组,直接
arrayM
  • 2.3.修改元素
arrayM[1] = "why"
  • 2.4.获取某一个下标值的元素
arrayM[0]
  • 3.遍历数组
*******常见*******
for i in 0..
  • 4.数组的合并

swift中如果两个数组类型是完全一致的,可以相加进行合并

let resultM = arrayM + array

字典

  • 1.字典的定义
    不可变字典(let)

注意:在swift中无论是数组还是字典都是使用[],但是如果[]中存放的是元素,编译器会认为是一个数组.如果[]中存放的是键值对,编译器会认为是一个字典

let dict = ["name" : "why", "age" : 18, "height" : 1.88]

可变字典(var)

不常用写法
// var dictM = Dictionary()
常用写法
//String为key类型, AnyObject为任意对象,是value类型
var dictM = [String : AnyObject]()
  • 2.对可变字典的操作
  • 2.1.添加元素
dictM["name"] = "why"
dictM["age"] = 18
  • 2.2.删除元素
//name为key,这个方法会有返回值value
dictM.removeValueForKey("name")
  • 2.3.修改元素

注意:如果有对应的key,则修改对应的value,如果没有对应的key,则添加对应的键值对

dictM["age"] = 30
  • 2.4.获取元素
dictM["weight"]
  • 3.遍历字典
    3.1.遍历所有的key
for key in dictM.keys {
    print(key)
}

3.2.遍历所有的value

for value in dictM.values {
    print(value)
}

3.3.遍历所有的key/value

for (key, value) in dictM {
    print(key)
    print(value)
}
  • 4.合并字典

注意:字典即使类型一直也不可以先加合并

let tempDict : [String : AnyObject] = ["phoneNum" : "+86 110", "sex" : "男"]
//先将key,value遍历出,再添加dictM
for (key, value) in tempDict {
    dictM[key] = value
}

元祖

swift特有

//这是数组
let userArray = ["why", 18, 1,88]
userArray[0]
//这是字典
let userDict = ["name" : "why", "age" : 18, "height" : 1.88]
userDict["name"]
  • 元组的基本写法
let userInfo = ("why", 18, 1.88)
//从该元祖中取值
userInfo.0
userInfo.1
userInfo.2
  • // 给每一个元素起别名
//常用写法
let userInfo1 = (name : "why", age : 18, height : 1.88)
userInfo1.name
userInfo1.age
userInfo1.height
//这样取值写法就比上面 userInfo.0 可阅读性强
//
//不常用写法
let (name, age, height) = ("why", 18, 1.88)
//取值,直接写
name
age
height

可选类型

swift特有
类中所有的属性在对象初始化时,必须有初始化值

//Person类 继承 NSObject
class Person : NSObject {
    var name : String?
    var view : UIView?
}
  • 1.定义可选类型
普通定义可选类型的方式
// var name : Optional
//
语法糖(常用)
var name : String?
  • 2.给可选类型赋值
name = "why"
  • 3.从可选类型中取值
print(name)   这样取出来的打印结果"Optional("why")\n",并不是直接得到"why",需要解包
//
// 从可选类型中取值:可选类型!-->强制解包
print(name!)   这样取出来的打印结果 "why"

注意:如果可选类型中没有值,那么强制解包程序会崩溃
强制解包是非常危险的操作:建议在解包前先判断可选类型中是否有值

if name != nil {
    print(name!)
}
  • 5.可选绑定
    1> 判断name是否有值,如果没有值,则不执行{}.
    2> 如果有值,则对可选类型进行解包,并且将解包后的值赋值给前面的常量
if let name = name {
    print(name)
}

你可能感兴趣的:(swift 基本语法)