初接觸 Swift

// Swift 沒有 main 函數 沒有佔位符  OC 中的字符串 數組 字典等都要用到 @ 但 Swift 中都不在用 @

// 經常使用的數據類型
let b1:Int = 10
let b2:Double = 1.22
let b3:String = "sdf"
var b4:Character = "a"

// 求字符串的長度
  // 與 OC 不一樣 ???
    // OC 直接 .count就能夠獲取字符串長度 而 Swift 是先獲取字符串中全部的字符 在獲取個數
var str = "string"
//print(str.characters.count)

// 拼接字符串
  // 與 OC 不一樣
    // OC 是用 stringWithFormat:拼接  或者 appendingWithString:
    // Swift 分如下兩種
// 1> 字符串與字符串拼接
var str1 = "good"
var str2 = "morning"
//print("\(str1)\(str2)") // 或者以下
str1 += str2
//print(str1)
// 2> 字符串與字符拼接
let s:Character = "a"
str.append(s)
//print(str)

// 是否相等 ==
  // OC 中 基本數據類型用 ==   字符串用 isEqualToString: 若是 if 判斷 if 後面沒有其餘的選擇時 大括號 能夠省略
  // Swift 中 不管是字符串仍是基本數據類型都是用 ==   其中 if判斷中 if 後面的 小括號 能夠 省略 但 大括號 必須保留
if (str == "good") {
    print(str)
}

// 前綴/後綴
str.hasPrefix("st")
str.hasSuffix("ing")

// 大小寫轉換
var str3 = "GOOGLE"
print("轉換成小寫的\(str3.lowercaseString)")
print("轉換成大寫的\(str3.uppercaseString)")

// 字符串支持遍歷
for item in str3.characters {
    print(item)
}

// 將 Swift 字符串轉換成 OC 對象
let str4 = str3 as NSString
print(str3)

// 數組
// 建立數組 必定要指定元素的數據類型

var array:[String] = ["1", "2", "3"]
// 添加元素
array.append("4")
// 刪除
array.removeAll() // 移除全部元素 包括數組開闢的空間 array = nil
array.removeAll(keepCapacity: true) // 移除全部元素 但 保留數組開闢的空間 array.count = 0
array.removeAtIndex(2) // 移除對應下標下的元素
array.removeFirst() // 移除第一個元素
array.removeLast() // 移除最後一個元素
// 數組的遍歷
for item in array {
    print(item)
}
// 元組遍歷
for (index, value) in array.enumerate() {
    print("index=\(index), value=\(value)")
}
print(array.count) // 數組個數
// 合併數組
var arrar1:[String] = ["mi", "33"]
array += arrar1

// 字典
// 建立字典也要指出字典的類型 用[] 沒有 {}
var dic:[String:AnyObject] = ["1": "you", "2": "wo"]
var dic1:[String:AnyObject] = ["2": "f", "3": "sss", "5": "sdf"]
// 增長和更新鍵值對
dic["3"] = "mm" // 若是字典中有這個 key 那就是更新 若是沒有就是 添加
// 刪除鍵值對
dic.removeAll() // 移除全部元素 包括數組開闢的空間 dic = nil
dic.removeAll(keepCapacity: true) // 移除全部元素 但 保留數組開闢的空間 dic.count = 0
dic.removeAtIndex(dic.indexForKey("1")!) // 注意此處的 !   移除對應下標下的元素
dic.removeValueForKey("1") // 移除對應下標下的元素
// 普通便利
for item in dic.enumerate() {
    print(item)
}
// 元組遍歷
for (index,value) in dic.enumerate() {
    print("index=\(index), valu=\(value)")
}
print(dic.keys) // 全部 key
print(dic.values) // 全部 value
// 合併兩個字典
for item in dic.keys {
    dic1[item] = dic[item]
}

// 可選類型
// 可選類型: 若是一個值有多是空 也有可能有值 那這個值就是一個可選類型   可選類型用 ? 表示
// 可選類型不能直接參與運算 要先強制解包(wrapped)  用!表示
// warning 在對一個可選類型類型進行解包以前必須確認這個可選值不爲 nil
// unexpectedly found nil while unwrapping an Optional value 說明對要對 nil 強制解包
// 在模型裏面全部的基本數據類型不能夠爲可選類型 不然會在字典傳模型的時候找不到 key 解決方法 給可選類型一個默認值 0
var c1:Int? = 1
let c2 = 2
let c3 = c1! + c2
print(c3)

// ?? 空運算標識符
// 做用: 若是可選類型值不爲空 ?? 會自動幫咱們解包再參與運算 若是是可選類型值爲空 就是用 ?? 後面提供的默認值進行運算
var value:Int?
let value1 = (value ?? 5) + 10
print("value1 = \(value1)")


// 枚舉
enum Month:String {
    // 第一種方式
    case January = "一月"
    case February = "二月"
    case Match = "三月"
    // 第二種方式
//    case January, February, Match
}
var month = Month.February
month = .February
print("month=\(month.rawValue)") // 用於獲取 枚舉值對應的 默認值(一月 二月 三月)
print("month=\(month.hashValue)") // 獲取枚舉值對應的 index

// 控制流

// if語句
// Swift 中沒有非0即真的概念
let a = 10
if a > 3 {
    print(a)
}

// if let
// if let 先判斷可選類型器是否爲空 不爲空建立一個局部常量來接收此時可選類型的值 在執行代碼塊 不然就不執行代碼塊 至關於 if a == 10 {} else {}
var aa:Int?
if let b = aa {
    print(b)
}
// if let where
// 對定義出來的常量在進行一次判斷
if let bb = aa where bb > 9 {
    print(bb)
}

// guard 守護
// 是用來判斷可選類型是否有值 沒值就執行 else  相似於 if let
func demo() { // 無參無返函數
    var a10:Int? = 11
    guard let d = a10 else {
        print("nil")
        return
    }
    print(d)
}
demo() // 調用

// switch
// switch 後面的小括號 能夠省略 case 後面不用寫 break 不會形成穿透效果 default 必須添加 並且只能添加在最後 case 後面只有一條語句 {}能夠省略
// switch 不在想 OC 那樣只侷限與整形的選擇 字符串 浮點型 等均可以
// 整形表示
let a1 = 10
switch a1 {
case 2:
    print("a = 2")
case 10:
    print("a = 10")
default:
    print("nil")
}

// 字符串表示
let string = "Beautiful"
switch string {
    case "sdb":
    print("nil")
    case "Beautiful":
    print(string)
default:
    print("Happyness")
}

// for 循環
// 寫法 1
var i = 0
for i = 0; i < 10; i++ {
    print(i)
}
// 寫法 2
for i in 0...10 { // 書寫格式必須這樣寫
    print(i)
}
// 寫法 3
for i in 0..<10 {  // 書寫格式必須這樣寫
    print(i)
}
// while
var j = 10
while i > 1 {
    i--
}
// 在 Swift 中沒有do while

數組

相關文章
相關標籤/搜索