目录:
一:Optional 可选型
var optionalVariable :Int?
let userInput = “abc"
var age = uerInput.toInt()
if age!=nil
{
println(“your age is \(age!)”)//作为开发者知道age一定是有值的
println(“your age is ”+String(age!))//在可选型后面加!叫做可选型的解包
}
else
{
println(“Invalidate userInput")
}
另一种解包方式Optional Binding
if let userAge = userInput.toInt()
{
println(“your age is \(userAge)")
}else{
println(“Invalidate userInput")
}
let strA:String? = “test"
strA!//解包
let strB:String ! = “test"
strB//不需要再次解包,由于在声明的时候已经加了!进行了解包,之后进行使用的时候就不需要解包
二:nil coalescing operator 聚合运算符
a ?? b 等同于 a! = nil ? a! : b
需要满足的条件:
a必须是一个可选型,b必须跟a解包之后的类型相一致
- 一般写法:
userNickName = “echo"
if userNickName != nil
{
println(“Hello,\(userNickName!)")
}else{
println(“hello,Guset")
}
- 三元运算符写法
let outputName:String = userNickName ! = nil ? userNickName ! :”Guset"
//如果userNickName的解包不为nil,则outputName 的值为userNickName的解包
//如果userNickName的解包为nil,则outputName 的值为”Guset"
println(“Hello,”+ outputName)
- 使用聚合运算符之后的代码
let outputName:String = userNickName ?? “Guest"
println(“Hello,”+ outputName)
三 区间运算符与for in循环
闭区间 [a,b] a…b
开区间 [a,b) a..< b
for index in 1…10
{
index
}
四 字符串
与oc对比
let String 相当于oc中的NSString 为不可变的字符串
var String 相当于oc总的NSMutableString 为可变的字符串
初始化一个空的字符串
var emptyString = “”
var emptyString2 = String( )//实质上是声明了一个类的对象判断一个字符串是否为空
emptyString.isEmpty 返回值为true或者false
字符串的遍历
var str = “hello,echo”
var c:Character
for c in str{
println(c)
}
字符串的操作:
拼接:
str.append(“!”)
注:
字符串之后拼接字符,只能用append方法,不可以用+来进行拼接。而字符串与字符串之间的拼接,可以使用+,同时也可以使用append方法。总之,append方法在字符串拼接的时候不会出错,推荐使用append方法对字符串进行拼接。计算字符串长度:
countElements(str)
字符串的插入
let str : String = “echo"
println(“I am \(str)")
- 字符串前缀,后缀
prefix and Suffix
.hasPrefix and .hasSuffix
let chapterNames = [
“第一章 1.为你的ios应用程序开发做准备”,
“第二章 2.为你的ios应用程序开发做准备”,
“第二章 3.为你的ios应用程序开发做准备”,
“第四章 4.为你的ios应用程序开发做运算符”,
“第五章 5.为你的ios应用程序开发做运算符”,
]
var count0= 0
var count1= 0
for name in chapterNames
{
if name.hasPrefix(“第二章”){
count0++
}
if name.hasSuffix(“运算符”){
count1++
}
}
以上所有方法都不用import其他类库,以下方法涉及到引入库文件
引入Foundation库
import Foundation
var str = “hello,playground"
str.capitalizedString//将str中的所有单词的首字母变成大写字母
str.uppercaseString//将str中的所有单词都变成大写
str.lowercaseString//将str中的所有单词都变成小写
在这个方法的使用过程中,并不改变str本身的值
//trim
var str2:String = " !hi!!!!"
str2.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())//去除了所有空格
str2.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: " !"))//截取了所有空格和所有!,保留了hi
//split
var str3 = "welcome to play swift"
str3.componentsSeparatedByString(" ")//用空格把str3分成几部分。输出结果为["welcome", "to", "play", "swift"]
str3.componentsSeparatedByCharactersInSet(NSCharacterSet(charactersInString: " !-"))//输出结果为["welcome", "to", "play", "swift"]
//join
var str4 = "-"
str4.join(["1","2","3"])//输出结果为“1-2-3”
一些字符串的常用操作
var str = "welcome to Play Swift step by step"
range
str.rangeOfString("step")
str.rangeOfString("step", options:NSStringCompareOptions.BackwardsSearch)
str.rangeOfString("welcome", options: NSStringCompareOptions.CaseInsensitiveSearch )//忽略大小写,进行匹配
str.startIndex
str.endIndex
let strRange = Range<String.Index>(start:str.startIndex,end:str.endIndex)
let startIndex = str.startIndex//startIndex不是整数
let endIndex :String.Index = advance(str.startIndex, 10)
let searchRange = Range<String.Index>(start:startIndex,end:endIndex)
str.rangeOfString("step", options: NSStringCompareOptions.CaseInsensitiveSearch, range: searchRange)
substring
var toIndex = advance(str.startIndex, 4)//从低一个字符到第四个字符
str.substringToIndex(toIndex)
var fromIndex = advance(str.startIndex, 14)
str.substringFromIndex(fromIndex)//从第十四个字符一直到结束的内容
str.substringWithRange(Range<String.Index>(start:toIndex,end:fromIndex))//截取第四到第十四的字符串,这个范围是一个前闭后开的区间
insert
var insertIndex = advance(str.startIndex, 2)
str.insert("!", atIndex:insertIndex )//在第2个位置后面插入一个“!”
remove
str.removeAtIndex(insertIndex)//返回值为被删掉打这个字符
str.removeRange(Range<String.Index>(start:str.startIndex,end:insertIndex))
replace
var replaceEndIndex = advance(str.startIndex, 3)
str.stringByReplacingCharactersInRange(Range<String.Index>(start:str.startIndex,end:replaceEndIndex), withString: "123")
五,数组与字典
数组
var array = ["a","b","c"]
一个数组只能存储特定类型的数据
所存储的数据不一定是一个类的对象,可以是基础数据类型
var array = ["a","b","c"]//隐式声明数组
var array2:[String] = ["a","b","c"]//显示
var array3:Arrary<String> = ["a","b","c"]
array[0] = "x"//为第0位赋值为x
创建一个空的数组
var array4 = [Int]()
var str = String()
var array5 = Array<String>()
var array6:Array<Int> = []
创建一个有统一初始值的数组
array6 = [Int](count:10,repeatedValue:0)//初始化一个长度为10,初始值为0的数组
数组的合并
var array7 = [2,3,4]
var array8 = array6+array7//array6合并array7
清空数组
array6 = []
array = [String]()
array2 = Array<String>()
数组的基本操作
array.count//数组的长度
array.append("d")//添加元素
array+=["e"]//添加元素
array.insert("p", atIndex: 2)//将“p”插入到array的索引位置为2的位置
array.removeAtIndex(0)//移除索引位置为0的元素