本人剛剛接觸Swift 就隨筆寫(xiě)寫(xiě) 不喜勿噴 如有什么不對(duì)的地方請(qǐng)不吝賜教??
先大概介紹Swift吧
2010年的夏天,蘋(píng)果公司的開(kāi)發(fā)人員Chris Lattne 接到了一個(gè)特別的任務(wù)匀归,為OSX和IOS平臺(tái)開(kāi)發(fā)下一代的編程語(yǔ)言,也就是Swift
蘋(píng)果公司于2014年WWDC(蘋(píng)果開(kāi)發(fā)者大會(huì))發(fā)布的新開(kāi)發(fā)語(yǔ)言Swift渣淤,可與Objective-C共同運(yùn)行于Mac OS和IOS平臺(tái)均抽,用于搭建基于蘋(píng)果平臺(tái)的應(yīng)用程序。2015年的WWDC開(kāi)發(fā)者大會(huì)上取具,蘋(píng)果公司推出了Swift2.0脖隶,并且Swift完全開(kāi)源
自從Swift發(fā)布以來(lái),在http://www.tiobe.com中的排行一直處于上升的狀態(tài)
Swift與OC的區(qū)別:
在swift當(dāng)中沒(méi)有main函數(shù)的概念 也沒(méi)有.h和.m文件暇检,一個(gè)類(lèi)只用.swift來(lái)表示 在swift中可以不寫(xiě)分號(hào) 如果一行當(dāng)中有多條語(yǔ)句的時(shí)候分號(hào)就必須寫(xiě) 在swift當(dāng)中采用print函數(shù)來(lái)代替NSLog函數(shù)打印數(shù)據(jù)产阱,而且蘋(píng)果建議我們這樣,print函數(shù)比NSLog要高 在print函數(shù)沒(méi)有占位符的概念 如果要插入函數(shù)采用\( )
變量和常量的區(qū)別:在swift當(dāng)中變量和常量分別用var(變量)/let(常量)表示 ? 格式:let/var 名字 = 初始值?? 在swift當(dāng)中不用明確的指出變量和常量的類(lèi)型块仆,xCode會(huì)根據(jù)你的初始值自行推導(dǎo)出具體類(lèi)型(Optional/alt+鼠標(biāo)左鍵)查看類(lèi)型
例子:
let a0 = 10
print("a0 = \(a0)")
let a1 = 20.3
print("a1 = \(a1)")
var a2 = 13
a2 = 14
print("a2 = \(a2)")
常用的數(shù)據(jù)類(lèi)型:? swift不存在隱式轉(zhuǎn)換构蹬,不同數(shù)據(jù)類(lèi)型不能做運(yùn)算,做運(yùn)算之前必須進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換??? 格式:let/var 名字:數(shù)據(jù)類(lèi)型 = 初始值
例子:
let a1:Int = 21
print("a1 = \(a1)")
var a2:Double = 123.23
print("a2 = \(a2)")
let b1 = Double(a1) + a2//這邊將a1強(qiáng)轉(zhuǎn)為Double類(lèi)型 只有相同類(lèi)型能運(yùn)算
print("b1 = \(b1)")
let a3:Bool = true//注意: swift中布爾值的兩個(gè)值:true false
print("a3 = \(a3)")
let a4:Character = "1"http://字符類(lèi)型采用character 并且雙引號(hào)賦值
var a5:String = "hello" // 在swif中采用String表示一個(gè)字符串悔据,雙引號(hào)賦值庄敛,不是一個(gè)對(duì)象,是一個(gè)結(jié)構(gòu)體
//字符串演示
/*var str = "hello"
//1.長(zhǎng)度
print("長(zhǎng)度 = \(str.characters.count)")
//2.拼接字符串采用 += 拼接字符 append的函數(shù)
var str1 = "world"
str += str1
print("str = \(str)")
let c:Character = "c"
str.append(c)
print("str = \(str)")
//是否相等 ==
if(str1 == "world"){
print("相等")
}
//前綴相等
if(str1.hasPrefix("wo")){
print("前綴是wo")
}
if(str1.hasSuffix("ld")){
print("后綴是ld")
}
//大小寫(xiě)轉(zhuǎn)換
print("str1的大寫(xiě)\(str1.uppercaseString)")
let str2 = "1231TFDH"
print("str2小寫(xiě)\(str2.lowercaseString)")
//字符串String支持遍歷
for item in str.characters{
print(item)
}
let str4 = str1 as NSString//swift里面的字符串根OC字符串可以互相轉(zhuǎn)換*/
取字符串特定下標(biāo)的字母 我暫時(shí)只知道兩種方法
第一種swift語(yǔ)法
let index = a4.startIndex.advancedBy(0)? ? ? ?
let index1 = a4.endIndex.advancedBy(-15)? ? ? ?
let range = Range(start: index, end: index1)
let a6 = a4.substringWithRange(range)
print(a6)
第二種將swift字符串先轉(zhuǎn)成oc字符串在運(yùn)算
let a7 = (a4 as NSString).substringWithRange(NSMakeRange(0, 1))
print(a7)
//數(shù)組演示
//在swift中數(shù)組類(lèi)型是Array科汗,創(chuàng)建一個(gè)數(shù)組或者字典時(shí)必須明確的指出數(shù)組里面元素的類(lèi)型
//跟OC里面的數(shù)組NSArray可以互相轉(zhuǎn)換
/*
var array1:[String] = ["123","234","345"]
print(array1)
array1 += array2
//增加元素
array1.append("456")
print(array1)
//刪除
//array1.removeAll(keepCapacity: <#T##Bool#>)//全部移除 保留內(nèi)存
//array1.removeAll() 全部移除 不保留內(nèi)存
//遍歷
//普通便利
for item in array1{
print(item)
}
//元組遍歷
for (index,value) in array1.enumerate(){//enumerate(array)之前的寫(xiě)法
print("index = \(index),value = \(value)")
}
//數(shù)組的個(gè)數(shù)
//array1.count
*/
//字典 Dictionary演示
var dict0:[String:AnyObject] = ["1":"a","2":"b","3":"c"]
var dict1:[String:AnyObject] = ["4":"d","5":"e","6":"f"]
//增加和更新
dict0["4"] = "d"http://如果key存在就是一個(gè)更新的操作藻烤,如果不存在就是一個(gè)增加的操作
print(dict0)
//刪除
dict0.removeValueForKey("1")
print(dict0)
dict0.removeAtIndex(dict0.indexForKey("4")!)
//合并兩個(gè)字典
for item in dict0.keys{
dict1[item] = dict0[item]
}
print(dict1)
//遍歷
for item in dict0{
print(item)
}
//元祖遍歷
for (key,value)in dict0.enumerate(){
print("key = \(key),value = \(value)")
}
//dic0.keys 所有key值
//dic0.values 所有value值
swift中新加了一種可選類(lèi)型
//概念:如果一個(gè)值可能有值,也可能為nil头滔,那么這個(gè)變量/常量就是一個(gè)可選類(lèi)型怖亭。可選類(lèi)型用?標(biāo)識(shí)出來(lái)
//如果打印數(shù)據(jù)被Optional字樣包含的話說(shuō)明打印了一個(gè)可選類(lèi)型
//可選類(lèi)型不能直接參與運(yùn)算坤检,參與運(yùn)算之前必須強(qiáng)制解包依许,強(qiáng)制解包用!表示
//警告:在對(duì)一個(gè)可選類(lèi)型進(jìn)行強(qiáng)制解包之前必須確認(rèn)這個(gè)可選值不為nil
//unexpectedly found nil while unwrapping an Optional value 說(shuō)明對(duì)nil強(qiáng)制解包
//在模型里面所有的基本數(shù)據(jù)類(lèi)型不可以為可選類(lèi)型,否則的話在字典轉(zhuǎn)模型的話找不到這個(gè)key 給默認(rèn)值0
/*var a1:Int? = 21
print(a1)
let b1 = 10
let c = a1! + b1
print(c)*/