美文网首页iOS Developer
Swift 3.0 学习笔记之简介

Swift 3.0 学习笔记之简介

作者: WavesFisherman | 来源:发表于2016-12-09 16:24 被阅读0次

    Swift 提供了自己的基本数据类型对应C和OC中的基本数据类型,包括Int描述整型,Double和Float描述小数类型,Bool描述布尔值,String描述字符串类型.当然也提供了主要的集合类型的数据类型,Array,Set和Dictionary,这些集合类型有专门一章来介绍它们。

    像C一样,Swift也使用变量存储数据根据变量名获取该变量存储的数据。Swfit也广发使用了那些不会改变的变量值。他们就是常量,比C里面的常量更强有力。常量贯穿整个Swift使那些不改变的量被你编码起来更安全简洁。

    除了那些熟悉的类型,Swift还介绍了OC找不到的高级的类型比如元组。元组可以让你创建传递多种类型的数据。你可以使用元组作为一个函数的返回值来返回多种类型的数据,就像返回一个单一的复合类型。

    Swift也介绍了可选类型(?),来处理缺失的类型。这些可选类型说“这是一个值,and它等于x”或者说“这完全不是一个值”。使用可选类型就类似于OC的空指针,但是他们可以适用任意类型,而不只是类。可选类型相对于OC的空指针来说不但更安全而且更易于表达。他们是Swif许多最强大功能的核心。

    Swift是一门安全的语言,那就意味着它可以帮助我们让你的代码可以使用的值的类型更简洁。如果你的部分代码想要一个String,类型安全就会避免你传递一个Int给它。而且,类型安全避免你传递一个可选类型的String给想要一个不是可选类型的String的代码片段。类型安全帮助你在开发过程中捕捉修复错误变得尽可能容易。

    定义常量 let a = 1                                                                                                                     定义常量 let a:Int = 1                                                                                                               定义变量 var a = 1                                                                                                                   定义变量 var a:Int

    Int (32 , 64)  的取值范围和你操作系统的范围一致 , 32bit系统的是  -(2)16次方~(2)16次方  64bit系统的是  - (2)32次方~ (2)32次方                                                                                 UInt 无符号整型 0~(2)32次方 和 0~(2)64次方  UInt8  UInt16 UInt32 UInt64

    typealias 别名 类似于 type define

    可选变量 var a:Int?  没有赋初值默认是nil

    a! (强制解析)的时候要先判空 

    if ( a != nil ) {print(a!)}

    //Int(possibleNumber) 类型转换成Int ?  可以是空值(nil)

    let actualNumber = Int(possibleNumber) 用一个临时常量存储这个值 ,用这种方式来判断一个值是否为空(nil),当然这里的Int类型就是possibleNumber原来的类型,只不过用这种类型重写来判断是否是空值

    if let actualNumber = Int(possibleNumber)  {

               print("\"\(possibleNumber)\" has an integer value of\(actualNumber)")

    }else{

             print("\"\(possibleNumber)\" could not be converted to an integer")

    }

    //多个条件判断 用逗号隔开 ,功能相当于&&(与)

    if let firstNumber = Int("4") , let secondNumber = Int("42") , firstNumber < secondNumber && secondNumber < 100 {

            print("\(firstNumber)<\(secondNumber)< 100")

    }

    Implicitly unWrapped Optionals 隐式解包    如 String! 而不是 String?

    从程序的结构可以清楚地看出一个变量(或者常量)是始终有值的就用每次都检查是否要解包,这种情况就用隐式解包 如:var a : String! 下面是api文档的例子 帮助理解 (就是使用了隐式解包,以后取值的时候就不用强制解包了,直接拿它的值)  对于隐式解包的判空和前面可选类型一致

    let possibleString:String?  = "An optional string."

    let forcedString:String = possibleString!  // requires an exclamation mark

    let assumedString:String!  = "An implicitly unwrapped optional string."

    let implicitString:String = assumedString  // no need for an exclamation mark

    捕捉错误 Error Handling (和可选类型相反,可以允许error的出现(也就是空值))

    func canThrowAnError() throws {

              // this function may or may not throw an error

    }

    do{

          try   canThrowAnError()

          // no error was thrown

    }catch{

         // an error was thrown

    }

    //上面的例子是这样的 先走这个do{}catch{} 然后走try{}里面的方法 canThrowAnError() 如果出现了error 那就走catch{}里面。

    func  makeASandwich()  throws{

         // ...

    }

    do{

        try  makeASandwich()

          eatASandwich()

    }catch  SandwichError.outOfCleanDishes {

         washDishes()

    }catch SandwichError.missingIngredients(let ingredients)  {

         buyGroceries(ingredients)

    }

    //makeASandwich()这个例子和上面的差不多,只不过对两个方法进行了error抓取,对error的类型分了类。

    Assertions 阻止程序继续执行 可以和端点一起调试

    let age = -3

    assert(age>=0,"A person's age cannot be less than zero")//当条件不满足是终止应用程序

    相关文章

      网友评论

        本文标题:Swift 3.0 学习笔记之简介

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