swift基础

swift基本使用

swift语句后面没有分号,不过就算不小心加了分号也不会报错,但是为了语法的规范不能加分号

 引框架的时候没有分号 直接写上框架名就行

 swift中输出使用print

 swift中字符串不用加 @ 符号

常量与变量

// 常量和变量

// 在Swift中声明变量或者声明常量的时候可以不用写变量或常量类型,因为系统会帮我们自动推导出对应的类型

// Swift中如果要在一条语句后面再加上一条语句必须用分号来分隔,但是不建议这种写法

// 变量

var a = 10; a = 20

// 常量

let b = 10

// b = 20

// 在swift中我们的变量名可以使用表情或者中文来表示,再原来的OC中是不可以的

var 😀 = 20

var 王 = 30

😀 + 王

// 当我们的变量等于一个浮点型数的时候,系统会自动推导成一个 Double 类型

var c = 99.2

// Swift中的类型

var zhengxing:Int = 100

var fudianxing:Float = 99.1

var zifuchuan:String = "aa"

// Character 为字符类型 就是只有一个字符 和C语言中的char类型

var erjie:Character = "z"

// Swift中不支持隐式转换

// 在OC中强制转换 (float)a 但在swift中是 Float(a)

Float(zhengxing) + fudianxing

字符串

var yu = "我是一只快乐的小鱼"

// 在Swift中 BOOL值不再是YES和NO了 而是 true 和 false

var isTrue = true

// 判断字符串是否为空

isTrue = huangyu.isEmpty

// Swift中字符串可以看做是字符的集合 那么 怎么求字符串的长度

yu.characters.count

// 求字节的长度

yu.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)

// 在Swift中字符串的第二种写法

var abc = "x"

var abcd = String("x")

// 拼接字符串

print(abc + abcd)

// 在Swift中打印可以把对象或者变量直接写在括号中

print(abc)

// 判断2个字符串是否相等

abc == abcd

// 大小写转换

let str = "hello"

str.uppercaseString

str.lowercaseString

// 格式化创建字符串

let str2 = String(format: "%02d:%02d", 1, 2)

let str3 = String(format: "%02d-%02d", arguments: [1, 2])

print(str2)

print(str3)

str2.substringToIndex(<#T##index: Index##Index#>)

//字符串的其他操作全部转化为NSString再去操作

// 转换

let str4:NSString = str2 as NSString

 数组

var arr1:Array = ["A", "2", "3", "4"];

var arr2 = ["1", "b", "3"];

// 声明一个空的数组,数组中的元素都是String类型

var arr3 = Array()

var arr4 = [String]()

// 数组遍历  for-in(明确的指出数组的类型)

for temp in array1 as [String] {

print(temp)

}

// 元祖遍历(index为数组下标,value为下标对应数组中的值)

for (index, value) in array1.enumerate()

{

print("index = \(index), value = \(value)")

}

// 添加元素

arr2 += ["forever"]

arr2.append("!")

arr2.appendContentsOf(["!", "!"])

// 在某个下标下添加元素

arr2.insert("cc", atIndex: 0)

arr2.insertContentsOf(["结婚"], at: 0)

// 删除最后元素

arr2.removeLast()

// 删除指定下标下的元素

arr2.removeAtIndex(0)

// 删除所有元素

arr2.removeAll()

 字典

var dic1: Dictionary= ["a" : 10]

var dic2 = ["b" : 20]

// 空的字典

var dic3: Dictionary= [:]

var dic4 = Dictionary()

dic3 = ["b" : "c"]

dic3.removeValueForKey("b")

// 删除所有

dic3.removeAll()

// 如果一个值可能为nil,那么这个值就是可选类型,用?标识

// Optional包围的就是一个可选类型

// 可选类型不能直接使用,必须进行强制解包,!强制解包,对nil强制解包会造成crash

// unexpectedly found nil while unwrapping an Optional value 对一个空的可选类型进行强制解包

// (a1 ?? "234")对可选类型进行判断,如果可选类型值为nil,则给他一个默认值

var a1:String?

a1 = "12345"

print(a1!.characters.count)

print((a1 ?? "234").characters.count)

 循环结构

for var i = 0; i < 10; i++

{

print(i)

}

// [0, 10]

for j in 0...10

{

print(j)

}

// [0, 10)

for j1 in 0..<10

{

print(j1)

}

var j2 = 10

while (j2 < 100) {

// 在Swift 3 以后不能使用 i++ 要写成 i+=1

j2 += 1

print(j2)

}

// repeat..while

repeat {

j2 += 1

} while j2 < 1000

 判断

if a == 10

{

print("123")

}

else {

print("456")

}

// 可选类型的条件分支

let str:String? = "hello"

// (1) if-let是对可选类型的判断 如果可选类型为空则不执行代码块, 如果不为空则用tempStr来接收此刻这个可选类型解包后的值

if let tempStr = str {

print(tempStr)

}

// (2) if-let-where跟if-let相似,where是对前面定义的这个局部变量再做一层判断

if let tempStr = str where tempStr.characters.count > 2 {

print(tempStr)

}


// guard-let-else

// 如果可选类型str为nil,则执行code代码块,最后一定要return,如果不为nil则强制解包后的值赋值给tempStr,这样在{}外卖就可以使用tempStr


guard let tempStr = str else {

// code

return

}

tempStr......

switch

// switch 不局限判断整型,可以是浮点型,也可以是字符串等等

// switch 后面的小括号可以省略,大括号不能省略

// case 后面至少要有一条执行语句!!!并且case后面的大括号可以省略,break可以不写,不会造成贯穿

// default一定要写,并且只能写在最后

let f = 3.2

switch f {

case 3.0:

print("===3.0")

case 3.1:

print("===3.1")

case 3.2:

print("===3.2")

default:

print("unknow")

}

 枚举

// (枚举值可以关联任意类型,没有默认的关联值)

// 关联如果是整型的话,会默认递增上去, 如果不是Int, 必须每个枚举值都关联上

enum Month:Int {

case January = 10

case February

case March

case April

}

// 如果明确指出一个变量/常量是属于那种枚举类型的话,可以直接.枚举赋值

let month = Month.February  // let month:Month = .january

var month1 = Month.January

month1 = .February

switch month {

case .January:

print("hashValue = \(month.hashValue), rawValue = \(month.rawValue)")

print(month)

case .February:

print("hashValue = \(month.hashValue), rawValue = \(month.rawValue)")

print(month)

case .March:

print("hashValue = \(month.hashValue), rawValue = \(month.rawValue)")

print(month)

case .April:

print("hashValue = \(month.hashValue), rawValue = \(month.rawValue)")

print(month)

}

函数

// 有参无返

// 当方法有参数时, 第一个参数名不显示 要在前面加上

func test2(num1 num1: Int, num2: Int)

{

print(num1 + num2)

}

test2(num1: 2, num2: 3)

// 有参有返

func test3(num1 num1: Int, num2: Int) -> Int

{

return num1 + num2

}

test3(num1: 4, num2: 5)

// 元祖作为返回值

func yuanzu(num1 num1: Int, num2: Int) -> (Int, Int)

{

return (num1 + num2, num1 * num2)

}

yuanzu(num1: 10, num2: 10)

// 函数的嵌套

func test4()

{

print("1")

func test5()

{

print(2)

}

test5()

}

test4()

 闭包 (block)

//            {

//                (参数名:参数类型...) -> 返回值类型

//                in

//                code, 执行代码

//        }


// 无参无返

let closure = {

() // () -> ()    () -> Void

in

print("无参无返")

}

closure()

// 有参无返

let closure1 = {

(str:String, str1:String) -> Void

in

print("有参无返\(str), \(str1)")

}

closure1("hello", "world")

// 无参有返

let closure2 = {

() -> String

in

return "无参有返"

}

print(closure2())

// 有参有返

let closure3 = {

(str:String, str1:String) -> String

in

return str + str1

}

print(closure3("有参有返", "world"))

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

推荐阅读更多精彩内容

  • import Foundation print("1","2","3","4"); //输出多个字符串,并用“**...
    风的低语阅读 459评论 0 0
  • 虽然Swift这门语言还很年轻,但是不可否认的是Swift很强大,也很便捷,但是习惯于OC编程之后再去写swift...
    One苹果OneDay阅读 678评论 0 2
  • swift的语法确实高端,用习惯了编程特别顺手。 swift中的变量分为两类,变量(var)和常量(let),常量...
    爱新觉罗fate阅读 306评论 0 0
  • 1、常量和变量 变量: var 常量: let 常量&变量的使用原则:尽量先用 let,只有需要变的时候,再用 v...
    CoderSC阅读 280评论 0 0
  • 篇幅比较长!!!如果真心想学习,还是找个安静的晚上,慢慢阅读,慢慢体会swift的轻妙之处,这里附上本人的gith...
    小人不才阅读 830评论 0 0