swift筆記

1.什么是swift

2014年臂港,蘋(píng)果公司推出的全新編程語(yǔ)言
天朝翻譯為雨燕蚊荣,logo就是個(gè)雨燕
跟oc一樣都用于ios,mac
2010-2014.4年開(kāi)發(fā)

2.語(yǔ)法特點(diǎn)

可以看到oc敌蜂,javascript庆械,c#,python等語(yǔ)言影子
借鑒了這些語(yǔ)言的優(yōu)勢(shì),同時(shí)具備編譯型語(yǔ)言的高能性盒让,和腳本語(yǔ)言的靈活性【不需要全部編譯通過(guò)梅肤,才能運(yùn)行】

3.相關(guān)數(shù)據(jù)

Xcode>6.0
mac >10.9.3

4.注意

swift的源文件的拓展名是.swift
比如:main.swift

兩個(gè)不需要

a.不需要寫(xiě)main函數(shù)
從上往下依次執(zhí)行,所以最前面的代碼自動(dòng)當(dāng)做程序的入口
b.不需要每一條語(yǔ)句都加分號(hào)

let num = 2

加上也是對(duì)的

但是---如果同一行代碼邑茄,有幾條語(yǔ)句的時(shí)候姨蝴,需要加上分號(hào)

let a = 1;let b = 2;let c= 3

注釋

單行注釋

//這是當(dāng)行注釋

多行注釋

/*
    這是多行注釋
    這是多行注釋
*/

多行注釋可以嵌套使用

/*
外層注釋
/*
內(nèi)層注釋
內(nèi)層注釋    
*/
外層注釋
*/

5.常量與變量

let 聲明常量

let radius = 10

var 聲明變量

var age = 20
var x = 0, y = 1 , z= 2

命名
基本上可以用任何你喜歡的字符作為常量和變量名

let ? = "蘋(píng)果"
let 電話 = “110”
let?? = “一坨”

control+command + 空格 輸出emoji

6.字符串簡(jiǎn)單操作

字符串是String類型,用“”包住內(nèi)容

let str = "123"
let str2 = "456"

用加號(hào)肺缕,字符串拼接【兩個(gè)不同類型的數(shù)據(jù)不能相加】

let str3 = str + str2;

用反斜線\和小口號(hào)()做字符串插值(把常量左医,變量插入到字符串中)

let hand = 2
var age = 10
let str = "我今年\(age)歲,有\(zhòng)(hand)只手"

7.打印輸出

println--輸出內(nèi)容后自動(dòng)換行
print -- 少了自動(dòng)換行的功能

8.數(shù)據(jù)類型

Int同木,F(xiàn)loat浮梢,Double,Bool彤路,Character秕硝,String
Array,Dictionary,元祖類型(Tuple),可選類型(Optional)
---我們可以看出,數(shù)據(jù)類型首字母都是大寫(xiě)

如何定義常量或者變量的數(shù)據(jù)類型

let age:Int = 10

一般來(lái)說(shuō)洲尊,沒(méi)有必要明確指定數(shù)據(jù)的類型
如果远豺,在聲明變量、常量時(shí)坞嘀,賦了初始值躯护,swift可以自動(dòng)推動(dòng)該變量或者常量的類型

let age = 10
會(huì)推斷出age是Int類型

9.變量的初始化

swift嚴(yán)格要求變量在使用之前初始化,不會(huì)像oc自動(dòng)有默認(rèn)值

整數(shù)
swift提供了特殊的有符號(hào)整數(shù)類型Int和無(wú)符號(hào)整數(shù)類型UInt
Int/UInt的長(zhǎng)度和當(dāng)前系統(tǒng)平臺(tái)一樣
在32位系統(tǒng)姆吭,Int和UInt都是32位
在64位系統(tǒng)榛做,Int和UInt都是64位

建議
在定義變量時(shí)候,別總是考慮有無(wú)符號(hào)内狸,數(shù)據(jù)長(zhǎng)度的問(wèn)題
盡量使用Int检眯,這樣可以保證代碼的簡(jiǎn)潔,可復(fù)用性

浮點(diǎn)數(shù)

Double -- 至少精確到15位
Float -- 至少精確到6位

浮點(diǎn)數(shù)可以用十進(jìn)制和十六進(jìn)制表示

十進(jìn)制(沒(méi)有前綴)
沒(méi)有指數(shù):let d1 = 12.5
有指數(shù):let d2 = 0.125e2
12.5 = 0.125 *10*10
十六進(jìn)制(以0x為前綴昆淡,且一定有指數(shù))
let d3 = 0xC.5p0

數(shù)字格式
可以增加額外的0锰瘸,還可增加額外的下劃線

let a = 100000

let b = 100_000

let c = 100
let d = 0100.00

10.類型轉(zhuǎn)換

兩個(gè)不同類型的數(shù)值不能相加

let num = 1
let num2 = 1.0
let sum = num + num2

上面代碼第三行會(huì)錯(cuò)
解決

let sum = Double(num)+ num2

類型別名

可以使用 typealias關(guān)鍵字定義類型的別名,跟C語(yǔ)言的typedef作用類似

typealias MyInt = Int
給Int起個(gè)別名叫MyInt

元類型名稱能用在哪兒昂灵,別名就能用在哪

let a:MyInt = 2
let minValue = MyInt.min

11.數(shù)組

如果定義數(shù)組時(shí)指定了保存對(duì)象的類型避凝,擇不能向數(shù)組中添加其他類型的內(nèi)容

let 定義的數(shù)組是不可變的
var 定義的數(shù)組是可變的

// 數(shù)組中保存的都是字符串
let arr = ["zhangsan", "lisi"]

// 數(shù)組中保存的是 NSObject
let arr1 = ["zhangsan", 1]

// 添加元素
array.append("lisi")

//更新
array[0] = "zhangwu"

// 刪除元素
array.removeAtIndex(1)

// 拼接數(shù)組
var array2 = [String]()
array2.append("1")
array2.append("2")
array += array2

12.字典

// 定義并實(shí)例化字典(這種類型是開(kāi)發(fā)中常用的類型)
var dict = [String: AnyObject]()
//添加(更新)
dict["name"] = "zhangsan"
dict["age"] = 18

// 刪除
dict.removeValueForKey("age")

// 合并字典
var dict2 = ["name": "wangwu", "age": 80, "title": "boss"]
for (k, v) in dict2 {
    dict.updateValue(v, forKey: k)
}

13.元祖

元組(tuples)把多個(gè)值組合成一個(gè)復(fù)合值眨补。元組內(nèi)的值可以使任意類型,并不要求是相同類型撑螺。

let http404Error = (404, "Not Found")
// http404Error 的類型是 (Int, String),值是 (404, "Not Found")

println("The status code is \(http404Error.0)")
// 輸出 "The status code is 404"
println("The status message is \(http404Error.1)")
// 輸出 "The status message is Not Found"

你可以在定義元組的時(shí)候給單個(gè)元素命名

let http200Status = (statusCode: 200, description: "OK")

給元組中的元素命名后甘晤,你可以通過(guò)名字來(lái)獲取這些元素的值:

println("The status code is \(http200Status.statusCode)")
// 輸出 "The status code is 200"
println("The status message is \(http200Status.description)")
// 輸出 "The status message is OK"


14.循環(huán)和遍歷

//whlie
while false
{

}
//類似于do...while
repeat
{

}while false
// 循環(huán)
for var i = 0; i < 10; i++ {
    print(i)
}
// 遍歷 0 ~ 9(省略號(hào)之間不能有空格)
for i in 0..<10 {
    print(i)
}

// 遍歷 0 ~ 10(省略號(hào)之間不能有空格)
for i in 0...10 {
    print(i)
}

// 特殊寫(xiě)法(如果不關(guān)心循環(huán)本身的索引,可以用通配符'_'忽略)
for _ in 0...10 {
    print("hello")
}

數(shù)組遍歷

var studentArr = [1,2,3,4,5,6,7,8,9]
for item in studentArr
{
    print("item = \(item)")
}
//可以遍歷數(shù)組中的所以和元素(間接用到了元組的特性)
for(index,value)in studentArr.enumerate()
{
    print("index =\(index)   value = \(value)")
}


/字典的遍歷

var studentDic = ["姓名":"張三","愛(ài)好":"男""]
for (key,value)in studentDic
{
    print("key = \(key)  value = \(value)")
}

15.switch和枚舉

//swtich(自帶break,可以重復(fù),但是找到一個(gè)就不會(huì)找第二個(gè))
var name1 = "小明"
switch name1
{
    case "小明":print(name1)
    //要想要自帶貫穿效果(重復(fù)之后也繼續(xù)尋找)加fallthrough關(guān)鍵字
    fallthrough
    case "小明":print(name1)
    //一定要包含所有條件
    default: print("不存在")
}


//case可以寫(xiě)區(qū)間
var age1 = 12
switch age1 {
case 10...15:
    print("a")
default:
    print("默認(rèn)")
}

//當(dāng)age2 == 15成立的時(shí)候把a(bǔ)ge2賦給age
var age2 = 15
switch age2{
case let age where age2 == 15:
    print("age = \(age)")
default: break
}

//遍歷元祖
var studentTuple = (姓名:"張三",性別:"男",年齡:12)
switch studentTuple
{
case ("張三","男",12):
    print("找對(duì)了")
case (_,_,12):
    print("找對(duì)了")//只要一個(gè)條件成立就可以進(jìn)
default:
    break
}

*枚舉

//枚舉(和oc一樣默認(rèn)初始值是0,如果修改初始值的話需要制指定類型,swift的枚舉創(chuàng)建必須要帶case)
enum season :Int
{
    case spring = 2
    case summer
    case autumn
    case winter
}
print(season.autumn)
//打印枚舉值的值
print(season.autumn.rawValue)

var today = season.summer
//篩選枚舉
switch today
{
    case.spring:print("春天")
    case.summer:print("夏天")
    case.autumn:print("秋天")
    case.winter:print("冬天")
}


16.函數(shù)

//函數(shù)
//無(wú)參無(wú)返回
func func1()
{
    print("無(wú)參無(wú)返回值")
}
//無(wú)參有返回
func func2()->String
{
    print("無(wú)參有返回值")
    return "小明"
}
//有參無(wú)返回
func func3 (a :String)
{
    print("有參無(wú)返回值")
}
//有參有返回
func func4 (a:Int)->String
{
    print("有參有返回值")
    return String(a)
}
//函數(shù)調(diào)用
func1()
func2()
func3("123")
func4(1)

//返回值是多個(gè)參數(shù)
func func5()->(Int,String)
{
    return(1,String(123))
}


17.結(jié)構(gòu)體

我們通過(guò)關(guān)鍵字 struct 來(lái)定義結(jié)構(gòu)體:
struct nameStruct { 
   Definition 1
   Definition 2
   ……
   Definition N
}

我們定義一個(gè)名為 MarkStruct 的結(jié)構(gòu)體 遏弱,結(jié)構(gòu)體的屬性為學(xué)生三個(gè)科目的分?jǐn)?shù),數(shù)據(jù)類型為 Int:
struct MarkStruct{
   var mark1: Int
   var mark2: Int
   var mark3: Int
}
我們可以通過(guò)結(jié)構(gòu)體名來(lái)訪問(wèn)結(jié)構(gòu)體成員漱逸。

結(jié)構(gòu)體實(shí)例化使用 let 關(guān)鍵字:
struct studentMarks {
   var mark1 = 100
   var mark2 = 78
   var mark3 = 98
}
let marks = studentMarks()
print("Mark1 是 \(marks.mark1)")
print("Mark2 是 \(marks.mark2)")
print("Mark3 是 \(marks.mark3)")

以上程序執(zhí)行輸出結(jié)果為:
Mark1 是 100
Mark2 是 78
Mark3 是 98

18.類

Class classname {
   Definition 1
   Definition 2
    --- 
   Definition N
}
定義一個(gè)類
class student{
   var studname: String
   var mark: Int 
   var mark2: Int 
}

創(chuàng)建一個(gè)實(shí)例的語(yǔ)法:
let studrecord = student()

class studentMarks {
   var mark = 300
}
let marks = studentMarks()
println("Mark is \(marks.mark)")

輸出:
Mark is 300
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末游沿,一起剝皮案震驚了整個(gè)濱河市饰抒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奏候,老刑警劉巖循集,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蔗草,居然都是意外死亡咒彤,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)咒精,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)镶柱,“玉大人,你說(shuō)我怎么就攤上這事模叙⌒穑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)故觅。 經(jīng)常有香客問(wèn)我厂庇,道長(zhǎng),這世上最難降的妖魔是什么输吏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任权旷,我火速辦了婚禮,結(jié)果婚禮上贯溅,老公的妹妹穿的比我還像新娘拄氯。我一直安慰自己,他們只是感情好它浅,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布译柏。 她就那樣靜靜地躺著,像睡著了一般姐霍。 火紅的嫁衣襯著肌膚如雪鄙麦。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,457評(píng)論 1 311
  • 那天邮弹,我揣著相機(jī)與錄音黔衡,去河邊找鬼。 笑死腌乡,一個(gè)胖子當(dāng)著我的面吹牛盟劫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播与纽,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼侣签,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了急迂?” 一聲冷哼從身側(cè)響起影所,我...
    開(kāi)封第一講書(shū)人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎僚碎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體卷中,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蟆豫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年十减,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帮辟。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡壳繁,死狀恐怖荔棉,靈堂內(nèi)的尸體忽然破棺而出蒿赢,到底是詐尸還是另有隱情,我是刑警寧澤壹若,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布店展,位于F島的核電站秃流,受9級(jí)特大地震影響舶胀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜糖赔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一放典、第九天 我趴在偏房一處隱蔽的房頂上張望基茵。 院中可真熱鬧奋构,春花似錦声怔、人聲如沸舱呻。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至假抄,卻和暖如春丽猬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背脚祟。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工为黎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留行您,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓炕檩,卻偏偏與公主長(zhǎng)得像淮野,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子经瓷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容

  • 初見(jiàn)swift 打印‘hello world' print("hello world"); 教程 類型 基礎(chǔ)類型:...
    PanPan1127閱讀 854評(píng)論 0 2
  • 渲染: 1 當(dāng)前屏幕渲染:在GPU的當(dāng)前屏幕緩沖區(qū)中進(jìn)行的渲染 2 離屏渲染:在GPU當(dāng)前屏幕緩沖區(qū)外另建緩沖區(qū)渲...
    adrian920閱讀 385評(píng)論 0 0
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,819評(píng)論 1 10
  • 關(guān)于 Swift 重要這個(gè)文檔所包含的準(zhǔn)備信息, 是關(guān)于開(kāi)發(fā)的 API 和技術(shù)的队贱。這個(gè)信息可能會(huì)改變, 根據(jù)這個(gè)文...
    無(wú)灃閱讀 4,316評(píng)論 1 27
  • 我前前后后到過(guò)日本三次锋恬,曾經(jīng)去過(guò)東京编丘、北海道彤悔、大阪索守、神耐川,但總是行色匆匆杨赤,沒(méi)有好好了解這個(gè)島國(guó)截汪。一直向往...
    何艷MarieHe閱讀 555評(píng)論 3 4