作者:Loving_iOS
转载请标明出处:http://blog.csdn.net/loving_ios/article/details/49339907本次讲解的开发环境为Xcode7.0.1 创建playground文件,进行的代码编写。
// 变量的声明规则 let (var) 变量名 = 值
// 类型推断:通过给定的值对变量进行类型推断和确定
var string1 = "abc" // 此时类型以确定为字符串类型
// string1 = 3 若果给其其他类型的值则出错
// let 创建的为不可变变量 var 创建的为可变变量
//***************************基本数据类型*******************
var a = 10
var b = 20
// 关于整型的类型推断,如果在32位系统环境下自动推断为Int32,64为环境为Int64
let number = 57 // 创建不可变变量
//number++ 此时是不可更改值的
//指定数据类型 语法格式: var(let) 变量:变量类型 = 值
// 如果给定类型 在使用变量之前一定要赋值
var number2:Int = 50
number2++
// 如果是浮点数自动推断类型为Double
var score = 90.0 // 此时score为Double类型
// 如果需要得到Float类型 则需要指定数据类型
var score1:Float = 90.0
// 注意:Swift中不支持隐式类型转换,充分体现了Swift的安全性消除潜在威胁
// 所以不同类型是不能运算的 需要转成同类型 语法: 类型(变量)
var sumScore = score + Double(score1)
// 或者
//var sumScore = Float(score) + score1
// *****************************字符串*********
// 字符串自动推断类型为String
let name = "悟空" // String类型
// 如何区分创建的是字符串还是字符那 需要指定类型
let char:Character = "a" // 字符类型
// 重载运算符+ 拼接字符串
let string2 = "I Love"
let string3 = "You"
let string4 = string2 + string3
// 字符串的截取
// 方式1.
// String 和 OC 的NSString 不同 需要给一个INDEX类型的下标
var strTest = "0123456789"
// String.Index取得下标
var index_start = strTest.startIndex; // 取得开始下标
var index_end = strTest.endIndex; // 取得结束下标
// 取得下一个位置的下标
var index_suc = index_start.successor()
// 取得上一个位置的下标
var index_pre = index_end.predecessor()
// 截取
var subString = strTest.substringFromIndex(index_suc)
//方式2.将String转换为NSString类型再用NSString方法截取
// as 指定目标类型
var subString1 = (strTest as NSString).substringFromIndex(1)
var subString2 = (strTest as NSString).substringToIndex(6)
// 方式3.截取任意INDEX类型下标的字符串
let index_sub = strTest.startIndex.advancedBy(1) // 从开始下标加相应数量的下标 此时取得的是0 + 1 = 1下标
let index_sub1 = strTest.endIndex.advancedBy(-1) // 从结束下标减相应数量的下标 此时取得的是10 - 1 = 9下标
// 注意:开始坐标只能加 结束坐标只能减 不要越界
var subString3 = strTest.substringFromIndex(index_sub)
// 在Swift中变量几乎支持所有Unicode编码的字符 除了数学中的符号 下划线 特殊符号
// 字符串可以通过传递一个类型为Character的数组来初始化
let str:[Character] = ["a", "b", "c"]
var str1 = String(str)
print(str1)
// *************************数组*********************
// 数组中存储相同类型的数据
var array = [1, 2, 4] // 自动推断为[Int]类型的数组
var array2 = ["1", "2", "4"] //[String]类型
// 给数组指定类型
// 1.语法 [Int]
var array3:[Int] = [1, 3, 3]
// 2.语法
var array4:Array<Int> = [1, 3, 4]
// 给数组添加元素
array.append(4) // 将4加到数组后面
// 插入元素
array.insert(5, atIndex: 2) // 在索引处插入元素
// 获取最后元素
array.last
// 获取第一个元素
array.first
// 删除元素
array.removeAtIndex(3) // 删除索引处的元素 并且返回删除掉的元素
// 更改元素
array[4] = 3
// 查询元素
var num = array3[2]
// 数组中重载运算符的使用
array3 += array4 // 将两个数组元素合到一起 赋值给array3
array3
array4
// 区域运算符
// ...1...2从1到2闭区间
// ..<1..<2从1到2开区间
array4[0...2]
array4[0..<2]
// 区间替换
array4[0...2] = [3, 4, 4, 4, 3] // 将array4数组中0~2的元素替换成[3, 4, 4, 4, 3]没有个数限制
// ************************字典****************
// 键值对数组:字典 规则:键与键类型相同 值与值类型相同 键值类型可以不同
var dictionary = [1:"1", 2:"2"]
// 声明字典类型
// 1.[key:value]
var dic:[Int:String] = [1:"a", 2:"b"]
// 2.Dictionary<key, value>
var dic1:Dictionary<Int, String> = [1:"v", 2:"b"]
// 查询字典
// 根据key查询
let str_str = dictionary[1]
// 根据key进行取值并且赋值操作时 如果key存在则进行修改 如果没有对应的key则执行插入操作
dictionary[4] = "3"
dictionary
// 删除
var index_dic = dictionary.indexForKey(1)
dictionary.removeAtIndex(index_dic!)
dictionary.removeValueForKey(2)
dictionary.removeAll()
//*****************可选类型***************
// 可选类型的使用 可以声明nil的变量
// 不是类型可选 而是当前类型下的值可选就是可以为nil
// 语法规则 变量:类型?
var error:String? = nil
error = "error"
error! += "404"
error
// 注意可选类型的变量在赋值时不需要加!使用变量时需要加! 用来解包
// ************************元组**************
// 语法 () 源于关系型数据库的概念 存储不同类型的数据
// 元组可以作为函数的返回值 处理多返回值的情况
var status = (404, "Not Found")
// 元组自带取值方法
status.0
status.1
// 也可以对元组中的数据进行命名获取
var status1:(num:Int, info:String) = status
status1.num
status1.info