本人刚刚接触Swift 就随笔写写 不喜勿喷 如有什么不对的地方请不吝赐教
先大概介绍Swift吧
2010年的夏天,苹果公司的开发人员Chris Lattne 接到了一个特别的任务,为OSX和IOS平台开发下一代的编程语言,也就是Swift
苹果公司于2014年WWDC(苹果开发者大会)发布的新开发语言Swift,可与Objective-C共同运行于Mac OS和IOS平台,用于搭建基于苹果平台的应用程序。2015年的WWDC开发者大会上,苹果公司推出了Swift2.0,并且Swift完全开源
自从Swift发布以来,在http://www.tiobe.com中的排行一直处于上升的状态
Swift与OC的区别:
在swift当中没有main函数的概念 也没有.h和.m文件,一个类只用.swift来表示 在swift中可以不写分号 如果一行当中有多条语句的时候分号就必须写 在swift当中采用print函数来代替NSLog函数打印数据,而且苹果建议我们这样,print函数比NSLog要高 在print函数没有占位符的概念 如果要插入函数采用\( )
变量和常量的区别:在swift当中变量和常量分别用var(变量)/let(常量)表示 格式:let/var 名字 = 初始值 在swift当中不用明确的指出变量和常量的类型,xCode会根据你的初始值自行推导出具体类型(Optional/alt+鼠标左键)查看类型
例子:
let a0 = 10
print("a0 = \(a0)")
let a1 = 20.3
print("a1 = \(a1)")
var a2 = 13
a2 = 14
print("a2 = \(a2)")
常用的数据类型: swift不存在隐式转换,不同数据类型不能做运算,做运算之前必须进行强制类型转换 格式:let/var 名字:数据类型 = 初始值
例子:
let a1:Int = 21
print("a1 = \(a1)")
var a2:Double = 123.23
print("a2 = \(a2)")
let b1 = Double(a1) + a2//这边将a1强转为Double类型 只有相同类型能运算
print("b1 = \(b1)")
let a3:Bool = true//注意: swift中布尔值的两个值:true false
print("a3 = \(a3)")
let a4:Character = "1"//字符类型采用character 并且双引号赋值
var a5:String = "hello" // 在swif中采用String表示一个字符串,双引号赋值,不是一个对象,是一个结构体
//字符串演示
/*var str = "hello"
//1.长度
print("长度 = \(str.characters.count)")
//2.拼接字符串采用 += 拼接字符 append的函数
var str1 = "world"
str += str1
print("str = \(str)")
let c:Character = "c"
str.append(c)
print("str = \(str)")
//是否相等 ==
if(str1 == "world"){
print("相等")
}
//前缀相等
if(str1.hasPrefix("wo")){
print("前缀是wo")
}
if(str1.hasSuffix("ld")){
print("后缀是ld")
}
//大小写转换
print("str1的大写\(str1.uppercaseString)")
let str2 = "1231TFDH"
print("str2小写\(str2.lowercaseString)")
//字符串String支持遍历
for item in str.characters{
print(item)
}
let str4 = str1 as NSString//swift里面的字符串根OC字符串可以互相转换*/
取字符串特定下标的字母 我暂时只知道两种方法
第一种swift语法
let index = a4.startIndex.advancedBy(0)
let index1 = a4.endIndex.advancedBy(-15)
let range = Range(start: index, end: index1)
let a6 = a4.substringWithRange(range)
print(a6)
第二种将swift字符串先转成oc字符串在运算
let a7 = (a4 as NSString).substringWithRange(NSMakeRange(0, 1))
print(a7)
//数组演示
//在swift中数组类型是Array,创建一个数组或者字典时必须明确的指出数组里面元素的类型
//跟OC里面的数组NSArray可以互相转换
/*
var array1:[String] = ["123","234","345"]
print(array1)
array1 += array2
//增加元素
array1.append("456")
print(array1)
//删除
//array1.removeAll(keepCapacity: <#T##Bool#>)//全部移除 保留内存
//array1.removeAll() 全部移除 不保留内存
//遍历
//普通便利
for item in array1{
print(item)
}
//元组遍历
for (index,value) in array1.enumerate(){//enumerate(array)之前的写法
print("index = \(index),value = \(value)")
}
//数组的个数
//array1.count
*/
//字典 Dictionary演示
var dict0:[String:AnyObject] = ["1":"a","2":"b","3":"c"]
var dict1:[String:AnyObject] = ["4":"d","5":"e","6":"f"]
//增加和更新
dict0["4"] = "d"//如果key存在就是一个更新的操作,如果不存在就是一个增加的操作
print(dict0)
//删除
dict0.removeValueForKey("1")
print(dict0)
dict0.removeAtIndex(dict0.indexForKey("4")!)
//合并两个字典
for item in dict0.keys{
dict1[item] = dict0[item]
}
print(dict1)
//遍历
for item in dict0{
print(item)
}
//元祖遍历
for (key,value)in dict0.enumerate(){
print("key = \(key),value = \(value)")
}
//dic0.keys 所有key值
//dic0.values 所有value值
swift中新加了一种可选类型
//概念:如果一个值可能有值,也可能为nil,那么这个变量/常量就是一个可选类型。可选类型用?标识出来
//如果打印数据被Optional字样包含的话说明打印了一个可选类型
//可选类型不能直接参与运算,参与运算之前必须强制解包,强制解包用!表示
//警告:在对一个可选类型进行强制解包之前必须确认这个可选值不为nil
//unexpectedly found nil while unwrapping an Optional value 说明对nil强制解包
//在模型里面所有的基本数据类型不可以为可选类型,否则的话在字典转模型的话找不到这个key 给默认值0
/*var a1:Int? = 21
print(a1)
let b1 = 10
let c = a1! + b1
print(c)*/