Swift学习笔记一

1.可选类型Optional

  • ? 可以为 nil , !不能为nil
  • 强制解析 myString! (访问myString)
  • 自动解析 var myString:String!
  • 可选绑定 var myString:String?

循环

  • while
  • repeat { }while
  • continue语句:停止本次循环 开始下次循环
  • break :会立刻结束整个控制流的执行
  • fallthrough:如果在case执行完后,继续执行下面的case,需要使用fallthrough(贯穿)关键字。

字符串

  1. 字符串字面量

     var stringA = "Hello"
    
  2. String 实例化

     var stringB = String("Swift!");
    
  3. stringA.isEmpty (判断是否为空)

  4. Siwft4.0 修改:String成Collection类型

     let greeting = "Hello Mars"
     print(greeting.count)
     greeting.forEach{print($0)}
    

字符 Character

  1. 不能创建空的 Character

  2. 字符串连接字符

     let charB: Character = "B"
     var str:String = "Hello"
     str.append(charB)
    

数组

  1. 创建:

     var arry1: Array<Int> = Array<Int>()
    
     var someInts = [Int](repeating: 0, count: 3)
    
     var somebInts:[Int] = [10, 20, 30]
    
  2. 访问数组:

         //1
         var someVar = somebInts[0]
         //2
         Array(somebInts[0..<2]) 
    
  3. 修改

     arrInts[2] = 50
    
  4. 删除

     //1
     arrInts.remove(at: 2)
     //2
     arrInts.removeLast()
    
  5. 遍历数组

     //1
     for (index, item) in arrInts.enumerated() {
         print("\(index),\(item)")
     }
     //2.
     arrInts.forEach {print($0)}
     //3. for-in
    
  6. 合并数组

      var ints = somebInts + arrInts
    
  7. count 、 isEmpty

字典

  1. 创建

     //1
     var dict = [Int: String]() //key为int value为String
     //2
     var dic:[Int: String] = [1:"One", 2:"Two", 3:"Three"]
    
  2. 访问 dic[key]

  3. 修改字典

     //1.updateValue
     var oldVal = dic.updateValue("One 的新值", forKey:1)
     var dd = dic[1]
      //2.通过key来修改
     dic[1] = "最新 One值"
     print(String(describing:dic[1]))
    
  4. 移除key-value对

     //1.removeValue
     var removedValue = dic.removeValue(forKey: 2)
     //2.
     dic[2] = nil
    
  5. 遍历字典

    //1. for-in
    //2. enumerate
    
  6. 字典转数组

     let dictkeys = [Int](someDict.keys)
     let dictValues = [String](someDict.values)
    
  7. count , isEmpty

函数

  1. 常量,变量及I/O参数
  • 如果想要声明一个变量参数,可以在参数定义前加 inout 关键字,这样就可以改变这个参数的值了。

  • 当传入的参数作为输入输出参数时,需要在参数名前加 & 符,表示这个值可以被函数修改。

      func swapTwoInts(_ a: inout Int, _ b: inout Int)    {
      let temporaryA = a
      a = b
      b = temporaryA
      }
      var x = 1
      var y = 5
      swap(&x, &y)
    

2.嵌套函数

    func qiantaohanshu(fordec total: String) -> (String) -> String {
        func neihanshu (haha: String) -> String{
            return total + haha
        }
        return neihanshu
    }
    let diaoyong = qiantaohanshu(fordec: "天啊")
    diaoyong("好的")
    qiantaohanshu(fordec: "我是")("徐征")
    //打印结果为 我是徐征

闭包 Closures

  1. 表达式

     let divide = {(val1: Int, val2: Int) -> Bool in
          return val1 > val2
     }
     let result = divide(20,30)
     print(result)
    
  2. 尾随闭包:尾随闭包是一个书写在函数括号之后的闭包表达式,函数支持将其作为最后一个参数调用

  3. 闭包是引用类型:这也意味着如果您将闭包赋值给了两个不同的常量/变量,两个值都会指向同一个闭包:

集合 Set

    var vowel: Set<Character> = ["a", "e", "i", "o", "u"]
    vowel.count
    vowel.isEmpty

    vowel.contains("a")
    type(of: vowel.remove("a"))
    vowel.insert("a")
    //vowel.removeAll()

    for character in vowel.sorted() {
        print(character)
    }
    //
    vowel.forEach{print($0)}

结构体 struct 枚举 enum

  • 都是值类型

类 Class

  • 引用类型
  • 恒等运算符 ===:如果两个常量或者变量引用同一个类实例则返回 true
  • 不恒等运算符 !== 如果两个常量或者变量引用不同一个类实例则返回 true

属性

  1. 延迟存储属性 lazy :

    ('var' 关键字是必须的)

     class samples {
         lazy var no = number() //'var' 关键字是必须的
     }
    
     class number {
         var name =  "是小鸟"
     }
     var firstSample = samples()
     print(firstSample.no.name)
    
  2. 计算属性 getter setter

  3. 只读计算属性 getter

  4. 属性观察值: 可以为除了延迟存储属性之外的其他存储属性添加属性观察器,也可以通过重载属性的方式为继承的属性(包括存储属性和计算属性)添加属性观察器。

    注意: 不需要为无法重载的计算属性添加属性观察器,因为可以通过 setter 直接监控和响应值的变化。

     //willSet 在设置新的值之前调用
     //didSet 在新的值被设置之后立即调用
     //willSet和didSet观察器在属性初始化过程中不会被调用
     
     class Samplepgm {
         var counter: Int = 0 {
             willSet(newTotal) {
                 print("计数器:\(newTotal)")
             }
             didSet {
                 if counter > oldValue {
                     print("新增数\(counter - oldValue)")
                 }
             }
         }
         
     }
    
     let NewCounter = Samplepgm()
     NewCounter.counter = 100
     NewCounter.counter = 800
    
  5. 类型属性:类型属性是作为类型定义的一部分写在类型最外层的花括号({})内。

    使用关键字 static 来定义值类型的类型属性,关键字 class 来为类定义类型属性。

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

推荐阅读更多精彩内容