swift中元組,可選類型,斷言,字符串,字符串的截取,數組與字典的使用
昨天寫了關於swift中的一點知識,畢竟是第一天開始學習,感覺有點凌亂。今天寫點swift 4.0的東西,這才慢慢入門,懂了一些技巧,現在說下,swift中每個版本中xcode中的語法都不太一樣,看書和看視頻都介紹的是swift 4.0的語法,然而我的xcode中是3.0或者4.0.於是看着2.0的視頻學習4.0,哪裏的語法不一樣就去官網看文檔,重新修正。順便發下4.0的連接—請點擊
元組的使用
//元組的使用
func tupleDemo(){
let returnResult=("404","網頁無發現")
let http404Erroe=returnResult
print("返回代碼爲\(http404Erroe.0)--返回結果爲\(http404Erroe.1)")
let(justTheStautsCode,_)=returnResult
print(justTheStautsCode)
}
可選類型
//可選類型
func optionType(){
print("=============================swift 4.0============================")
let possibleNumber="123"
//因爲構造函數有可能初始化失敗,所以返回爲可選類型
let convertedNumber = Int(possibleNumber)
//先用來判斷是否存在值
if convertedNumber != nil {
//一旦確定存在值,則使用!來解包
print("concertedNumber的值爲\(convertedNumber!)")
}
//可選綁定:可以使用可選綁定來確定可選類型是否包含值
if let actualNumber=Int(possibleNumber) {
print("\(possibleNumber)的整數是\(actualNumber)")
}else{
print("\(possibleNumber)無法轉換爲Int類型")
}
if let firstNumber=Int("4"),let secondNumber=Int("42"),firstNumber<secondNumber && secondNumber<100{
print("\(firstNumber)<\(secondNumber)<100")
}
//隱式解包可選類型
let possibleString:String? = "Any optionan string."
let forceString:String = possibleString!
let assumeString:String!="An implicatly unwarpping optional string."
let implicatString:String=assumeString
if assumeString != nil{
print(assumeString)
}
if let definiteString = assumeString {
print(definiteString)
}
}
斷言
//錯誤處理
func doWithError(){
//斷言和先決條件
let age = -3
//當爲true時候繼續執行,false時候執行後面的語句,並且終止程序運行
assert(age<0,"A person's age can't be less than zero")
}
字符串
//字符串
func doWithString(){
/*
字符串
swift中是String類型
結構體,量級更輕,推薦使用
OC是繼承NSString類型
繼承自NSObject的對象
*/
let str="HELLO WORLD"
for c in str {
print(c)
print(str.count)//打印字符串的長度
}
//時間的格式化
let h=8
let m=3
let s=4
let dateString=String(format:"%02d:%02d:%02d",arguments:[h,m,s])
print(dateString)
let dateString2=String(format:"%02d:%02d:%02d",h,m,s)
print(dateString2)
}
字符串的截取
//字符串的截取
func subString(){
let greeting = "Hello, world!"
//index返回第一次字符串線的下標,下標是否爲空若不爲nil則將下標解包後返回,否則,去greeting.endIndex的值
let index = greeting.index(of: ",") ?? greeting.endIndex
let beginning = greeting[..<index]//半開範圍操作符,取0到index的字符給beginning
print("beginning的值爲\(beginning)")
//半開範圍操作符的使用
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count//不包括最後一個
print("count的值爲\(count)")
for i in 0..<count {
print("Person \(i + 1) is called \(names[i])")
}
//原生態的截取字符串,不包含結尾的內容還是很方便的
let str = "Hello, world!"
let i = str.index(str.startIndex, offsetBy: 4)
str[i] // 返回字符 'o'
let e = str.index(str.endIndex, offsetBy:-2)
str[i ..< e] // 返回 字符串 "o, worl"
}
數組
//數組
func arrayDemo(){
/*
swift中有一個AnyObject,表示任意對象
OC中所有對象都繼承自NSObject
swift中的對象,可以沒有任何對象
*/
var array:[AnyObject]=["zhangsan" as AnyObject,"list" as AnyObject]
array.append("wangwu" as AnyObject)
array.append(34 as AnyObject)//會自動擴容1,2,4,8,16會成倍增加
print(array)
//遍歷
for s in array {
print(s)
}
//數組的刪,改
array[0]="dfhdj" as AnyObject
print(array)
array.removeFirst()
array.remove(at: 1)
print(array)
var arrayMutable:[String]//mutablearray,定義數組並沒有分配空間
arrayMutable=[String]()//分配空間
arrayMutable.append("張三")
// 數組的初始化方式
// 1.定義->初始化
// var array:[String]
// array=[String]()
// 2.
// var array=[String]()
// array.append("12")
//數組的合併
var a:[String]=["張","sdsd"]
var b:[String]=["sdsd","www"]
var c:[String]=["小李子",String(12)]
a+=b
c+=a
print(a)
print(c)
}
字典的定義和json
func dictionAndJson(){
var dict=["name":"小花","age":10] as [String : Any]
//如果key存在則覆蓋
dict["name"]="小草"
//如果key不存在,新增
dict["title"]="老發"
print(dict)
//字典的遍歷
for (k,v) in dict {
print("key \(k)--value \(v)");
}
}