Swift学习笔记(1)
特点:
基于C和OC语言,使用现有的Cocoa和Cocoa Touch框架,无缝兼容C,OC语言
兼具编译语言的高性能和脚本语言的交互性
支持Playground,它允许程序事实预览,无需频繁创建和运行App
简洁,安全,简易,灵活,高效
开发环境
Mac OS X系统 10.10 或 Mac OS X系统 10.9.3
语法基础:
多行注释:可以嵌套,这点和其他语言不一样,很使用的一个功能
/*
//var myVarianle 42
/*-----------------------------*/
*/
分号:
单个语句后面无需加分号,加了也行
多个语句放在一行,需要加分号
数据类型:
常用数据类型:
Int:Int8、Int16、Int32、Int64
UInt:UInt8、UInt16、UInt32、UInt64
Double
Float
BOOL
Character
String
Optional(可选类型)
变量与常量
变量:值可以根据需要不断修改的量称为变量
使用var声明变量 var myVarianle 42
常量:值不能够被二次修改的量称为常量
使用let声明常量 let myConstant = 12
类型推导:
编译器再编译的时候通过提供的初始化值自动推导出 特定的表达式的类型
varmyVariable = 42 编译器自动推断其类型为Int
varint :Int = 10 显示申明类型,语法:“变量:类型名”
类型别名:
使用typealias关键字定义类型别名,类似typedef
typealias NSInteger = value
value :NSInteger Int = 45
var = 12
printIn(value);
布尔类型
var tigerIsAnimal :Bool = true
var animallsTiger = false
数组与字典
Array数组
使用[]操作符声明数组
let emptyArray = [] //声明一个空数组,可以插入任意类型的值
let emptyArray2 = String[]() //声明空数组 限定了值的类型为String
varshoppingList = [“catfish”,”water”,”tulips”,”blue paint”]
printIn(shoppingList.count)
printIn(shoppingList[1])
shoppingList[1]= “bottle of water”
printIn(shoppingList[1])
Dictionary字典
使用[key:value]操作符声明字典
let emptyDictionary1 =[:]
let emptyDictionary =Dictionary<String,Float>()
var occupations = [
"Malcolm": "Captain",
"Kaylee": "Mechanic",
]
println(occupations["Malcolm"])
occupations["Jayne"] ="Public Relations"
println("The occupationscount is "+ String(occupations.count))
元组tuple
元组可以将任意数据类型组装成一个元素
元组再作为函数返回值的时候特别适用,可以为函数返回更多的信息
元组创建
let(x,y) = (1,2)
let http200Status = (statusCode:200,description:“OK”)
let http404Error = (404,“Not Found”) //由一个Int和一个字符String组成
let (statusCode,statusMessage)= 后台突破Error
元组访问:
直接访问 通过key访问value,类似Dictionary
序号访问方式,序号从0开始 属性访问方式,点语法
可选类型Optional(?的用法)
可选类型:这个值要么存在,并且等于x;要么根本不存在
(变量名/常量名:类型?)
var serverResponseCode :Int? = 404 //?的意思事 要么存在,且值为404;要么不存在,为nil
let possibleNumber = “123” //letpossibleNumber =“Hello”
let convertedNumber :Int?=possibleNumber.toInt()
由于toInt方法可能会失败,因此它会返回一个可选的Int类型,而不同于Int类型。一个可选的Int类型被记为Int?,不是Int。?表示它的值可选的,可能返回的事一个Int,或者返回的值不存在
nil
swift的nil不同与OC中的nil。OC中,nil是一个指针指向不存在的对象。Swift中,nil不是指针而是一个特定类型的空值。任何类型的可选变量都可以被设为nil,不光是指针。
Nil不能用于非可选类型。
解包
解包(!的用法)
可选类型在每次访问的时候都会提取并检测它的值是否存在,但有时候根据程序结构就可以推断可选量在首次赋值后必然存在值,这时候,就不需要每次验证值是否存在,
如果确定一个可选量的值一定存在,那么我们使用 进行解包获取它的值,或者使用Optional Binding。
隐式解包的可选类型
可以把隐式解包可选类型 当成自动解包的可选类型。即不是每次适用的时候再变量、常量后面加,而是直接再定义的时候加这些可选量定义为隐式解包的可选量
(implicitly unwrapped optional)。
・隐式解包的可选量的声明格式为:在希望标为可选的类型名称后面,用感叹号 (!) 代替问号 (?)。
・隐式解包的可选类型主要用在一个变量/常量在定义瞬间完成之后值一定会存在的情况。
主要用在类的初始化过程中。