美文网首页
Swift (笔记)

Swift (笔记)

作者: 赵永洪 | 来源:发表于2015-12-28 21:36 被阅读41次

     swift

     1.打印

    print /println

    例:print("hello swift")   注意:swift可以不用分号


    1.常量:程序运行期间不可改变的量  修饰符 let   例:let number = 20

    2. 变量:程序运行期间可以改变的量 修饰符 var  例:var time = 30  time = 40 (可以改变)


    2.标识符

    1.由数字 字母 下划线 组成

    2.不能以数字开头

    3.不能与系统关键字重复  `系统关键字`

    4.全面支持Unicode编码

    附加:调用emoj 表情 control + command + 空格


    例:let `let` = 100 (如果和系统命相同的话需要🏠`系统命`)  let 希望 = 20  var 😢 = 40

    3.数据类型

    1.整形(若没有修饰类型 默认是Int)

    1.Swift  Int  

    声明整形的常量或者变量    修饰符 标识符 : 类型 = 初始值  例:let num : Int = 20

    2.浮点型(如果没给定类型修饰 默认是Double)

    单精度 Float 精确度<=6位    例:let float : Float = 3.1345678987689765

    双精度 Doublec 精确度<=15位  例:var double : Double =9.45687654568762893783937


    注意:Swift 中严格的类型审核,必须保证类型匹配,才能运算 例:double + Double(float)

    3.字符和字符串(String)

    例:let char : Character = "a"

    var dashabi : String = "dashabi"

    var 修脚 : NSString = "修脚"


    字符串的拼接:dashabi + "123456789"    (dashabi += "12345678odasfdf")

    不同类型的字符串拼接,需zhuan    as 强转修饰符

    dashabi + (修脚 as String)

    字符串调用方法用点调用(Swift 中没有[])

    var saodong = "saodong"

    saodong.uppercaseString //大写      saodong.lowercaseString //小写

    字符串长度

    saodong.characters.count

    其他类型转字符串

    1.插入语法  例:let num : Int = 20         "\(num)" 


    2.String() Xcode 6.4无法使用

    String(num)     

    saodong == dashabi

    Bool类型

    var xiaosaodong : Bool = true

    可选类型 ?    (!强制解析,把不一定的值肯定)

    var saoder : String? = "11"

    print(sadder)    !强制解析,把不一定的值肯定


    例:saoder! + "aaa"

    元组类型  (元组有多个参数)

    例1:var zhaodeyu = ("zhaodeyu", 100, "性别不详")

    zhaodeyu.0

    zhaodeyu.1

    zhaodeyu.2


    例2: var xiaozhao = (name : "xiaozhao", age : 100, sex : "nv")

    xiaozhao.name  (xiaozhao.0)

    xiaozhao.age  (xiaozhao.1)

    xiaozhao.sex  (xiaozhao.2)


    例3: let (name, age, sex) = xiaozhao

    name

    age

    sex


    4.数组类型

    数组初始化:  Array或者 [SomeType]

    1>空数组的初始化    例:let array : [Int] = []

    使用初始化方式      let arr = [Int]()

    使用初始化      let ar = Array()


    2> 非空数组  直接使用非空的数组    例:let 数组 : [Int] = [2, 1, 3, 4, 5, 6, 8]

    使用初始化方法

    let myArray = [Int](count: 5, repeatedValue: 1)

    var myArr = Array(arrayLiteral: 1, 2, 3, 4, 5)


    判断是否位空  :myArr.isEmpty      arr.isEmpty

    数组添加元素

    myArr.append(11)     

    myArr += [22]

    插入元素

    myArr.insert(99, atIndex: 0)

    取值

    myArr[0]

    修改

    myArr[1] = 30

    替换[0,3] 0到3

    myArr[0...3] = [1, 2, 3, 4]

    删除

    myArr.removeLast()

    myArr.removeAtIndex(0)

    myArr.removeAll()

    5.字典

    字典的初始化方式

    let dic = Dictionary()

    var dictionary = ["name" : "修  睿"


    字面量判断key值是否存在,如果存在,修改value否则添加

    dictionary["sex"] = "女"

    dictionary.updateValue("男", forKey: "sex")

    dictionary

    字典的删除

    dictionary.removeValueForKey("name")

    字典通过键值下表移除Key-Value

    let index = dictionary.indexForKey("sex")

    dictionary.removeAtIndex(index!)

    dictionary


    Swift的逻辑判断

    if...else  

    例:if 1 > 2 {

    } else {

    }

    Switch...case

    注意:1.不用写break,对应有一个falthrough

            2.填入的开关,不再知识整形的表达式可以是字符串

            3.case的条件可以不是固定的值,是个区间

    let abc = 30

    switch abc {

      case 10:

            print("10")

    case 30:

            print("30")


    var nameArr = ["zhangsan", "lisi"]

      switch nameArr[0]  {

              case "zhangsan":

                      print("zhangsan")


    [0, 3] 0 <= x <= 3      0...3

    [0, 4) 0 <= y < 4        0..<4

    例:let score = 90 {

                case 0..<60:

                       print("不及格")

                case 80..<100:

                       print("优秀") 


    6.循环

    while

    var i = 10

    while i < 100 {

    i++

    }

    do..while  (repeat..while)

    repeat {

    i++

    } while i < 200

    for循环

    for var i = 0; i < 100; i++ {

    i++

    }


    7.函数

    func 函数名 (参数列表)->返回值{ 函数体 }

    func printHello() {

    print("Hello, Swift!")

    }

    printHello()


    有参单返回  inout修改

    func sumNumber(inout a: Int, b: Int) ->Int {

    return a + b

    }

    var a = 100

    sumNumber(&a, b: 20)


    有参无返回

    func printName(name: String) {

    print("名字是" + name)

    }

    printName("小明")


    无参单返回

    func nameString() ->String {

    return "席主席"

    }

    nameString()


    有参数多返回

    func returnStudent(name: String, age: Int, sex: String) ->(name: String, age: Int, sex: String) {

    return (name, age, sex)

    }

    var (name1, age1, sex1) = returnStudent("小赵", age: 12, sex: "男")


    无参数多返回

    func moreString() ->(nameMore: String, age: Int) {

    return ("赵永洪", 22)

    }

    moreString()


    /******冒泡排序*******/

    var maopaoArr = [1, 2, 4, 2, 6, 0, 7]

    for var i = 0; i < maopaoArr.count; i++ {

            for var j = 0;  j < maopaoArr.count - 1; j++ {

                     if maopaoArr[j] > maopaoArr[j + 1] {

                            var temp:Int

                            temp = maopaoArr[j]

                            maopaoArr[j] = maopaoArr[j + 1]

                           maopaoArr[j + 1] = temp

             }

         }

    }

    print(maopaoArr)

    闭包  匿名函数      格式:{(参数列表) ->返回值类型 in 代码段}

    let block = {(str : String) ->String in

           return str

    }

    block("a" + "b")




    8. 类和结构体

    相同点: 1.都包含属性和方法, swift的结构体与OC的结构体都有很大的区别

                  2.都包含构造器方法

    不同点:  1.类可以被继承,结构体不能  

                   2.类包涵析构器,结构体没有

    1.类

    特点:

    两者不能同时存在

    wiliest  和  didset

    1.属性可以直接赋初值

    2.属性可以不确定

    例:var name : String?

           var age : Int?

    器方法  相当于以前的 alloc init

    例:init(name : String, age : Int) {

               self.name = name

               self.age = age

    }

    func printAge() {

                print(self.age!)

    }

    析构器

    deinit {

            // 释放资源

           //监听 代理

    }

    let person = Person (name: "zhao", age: 56)

    person.printAge()


    2 结构体 

    例:struct Car {

                   var carName : String?

                   var carNumber : Int?

                   init(carName : String, carNumber : Int) {

                              self.carName = carName

                              self.carNumber = carNumber

       }

       func printName() {

       print(self.carName!)

    }

    }

    总结

    Class Student : Person {

           var sex : String?

    //重写父类的初始化方法

           override init(name : String, age : Int) {

    //super的关键字

                        super.init(name : name, age : age) 

           }

            init(studentName : String, age : Int,  studentNumber : Int, studentSex : String) {

                       super.init(name : StudentName, age : age)

                       self.sex = studentSex

          }

         //class修饰符的方法,就是父类的方法 

            class fun printName(name : String) {

                      print(name)

          }

    }

    Student.printName("字符串")




    协议,protocol 协议名 {}

    注意1.如果类有继承关系,在所继承的类后面以逗号分隔去签协议

              2.若果类没有继承关系,在冒号之后签订协议

    例1:

    protocol personDelegate {

          fun change() ->String

    }

    例2:

    class teacher : Person,  PersonDelegate {

            func change() ->String {

                      return "name"

            }

    }

    相关文章

      网友评论

          本文标题:Swift (笔记)

          本文链接:https://www.haomeiwen.com/subject/joabhttx.html