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