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..<arrayM.count {
    print(arrayM[i])
}
for name in arrayM {
    print(name)
}
*******不常见*******
for i in 0..<2 {
    print(arrayM[i])
}
for name in arrayM[0..<2] {
    print(name)
}
  • 4.数组的合并

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

let resultM = arrayM + array

字典

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

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

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

可变字典(var)

不常用写法
// var dictM = Dictionary<String, AnyObject>()
常用写法
//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<String>
//
语法糖(常用)
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)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容