美文网首页
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