1,字符串
在swift中,字符串默认的类型是String,而不是NSString
在swift中是一个结构体,效率高,支持快速遍历
NSString是继承自NSObject,是一个OC对象,不支持快速遍历
//对字符串的快速遍历
var string:String = "hello playground,大家好"
for cin string {
print(c)
}
//字符串的拼接
let string1 = string +"hello"
let i =100
let view = UIView()
view.backgroundColor = UIColor.redColor()
print(string1 + "\(i) \(view.backgroundColor)")
let frame = CGRectMake(100,100, 100, 100);
print("区域\(frame)")
//格式拼接: [NSSting stringWithFormat:]
let string2 = String(format:"%02d:%02d:%02d", arguments: [1,5,10])
//取子串范围使用 String 和 Range ->取子串的时候
let myString ="hello"
//在myString中取出前三个字符
let subString = myString.substringWithRange(Range<String.Index>(start: advance(string.startIndex,0), end: advance(string.startIndex, 3)))
使用推荐:在swift中如果要结合range一起操作,建议先把私服穿转换成NSString,再进行处理,如下
let myString2:NSString ="hello"
myString2.substringWithRange(NSMakeRange(0,3))
2,数组
使用中括号[]来定义
定义的数组类型是[String],表示数组中只能存放字符串
在OC中数组分可变和不可变,
在swift中: let不可变,var可变
let array1 = ["zhangsan","lisi"]
//数组的遍历
for ain array1 {
print(a)
}
var array2 = ["aaa","bbb"]
//添加元素(不可变的数组无法添加元素)
array2.append("ccc")
//如果定义数组时,指定的对象类型不一致,则其类型是[NSObject]
var array3 = ["zzz",11,"123"]
for ain array3 {
print(a)
}
在OC中,如果需要向数组中加数字,需要转换成NSNumber
在swift中,可以直接添加 (万物皆对象)
同常在开发时,不建议在数组中使用不同类型的数据,使用起来不太方便,可能需要转换,如下
for ain array3 {
let string ="hi \(a)"
print(string)
}
数组的定义和初始化
//定义,但是没有初始化
var array4:[String]
//初始化一个字符串的可变数组
array4 = [String]()
array4.append("hello")
array4.append("world")
print(array4.capacity)//容量为2
//删除数据,keepCapacity,是否保持容量
array4.removeAll(keepCapacity:true)
print(array4.capacity)
//不论是否保存容量,再次追加元素的时候,每次超过容量,容量直接在现有容量的基础上 *2
//在实际开发中,绝大多数,数组的容量是固定的,需要注意保持容量,以及声明的时候,指定容量
for iin 0...10 {
array4.append("\(i)")
print("\(array4):\(array4.capacity)")
}
3,字典
定义一个字典,任然使用方括号[]
以下代码定义的字典类型是[String:NSObject]
在目前swift版本中,定义字典通常使用[String:NSObject]
//大多数情况下,key的类型是固定的
let dict = ["name":"zhangsan","title":"boss","age":18]
//遍历字典(注意:k,v随便写,前面是键key,后面是值value)
for (k,v)in dict {
print("\(k) -- \(v)")
}
可变字典:var
不可变字典:let
//定义字典,并且实例化
var dict1 = [String:NSObject]()
//设置内容
dict1["name"] = "laowang"
dict1["age"] =80
print(dict1)
//注意:如果key已经存在,设置数值时,会覆盖之前的值,字典的键不会重复
dict1["name"] = "abc"
print(dict1)
//删除内容(根据键删除值)
dict1.removeValueForKey("age")
print(dict1)
//合并字典
var dict2 = ["title":"boss"]
//利用循环来进行合并
//遍历dict2
for (k,v)in dict2 {
//跟新指定key的value
//如果不存在key,会新建,并且设置数值
//如果key存在,会覆盖值
dict1.updateValue(v, forKey: k)
}
print(dict1)
//dict2de 值不变
print(dict2)
4,函数
定义函数
OC的风格: - (void)函数名(参数){}
swift函数定义格式
func函数名(参数列表) ->返回值{//代码实现}
"->"是swift特有的,表示前面的执行结果输出给后面的
func sum(a:Int,b:Int) ->Int {
return a + b
}
sum(10,20)
//强制填写参数,使用#,可以在调用函数的时候,增加参数
//会让代码提示更直观,符合OC程序员的习惯
func sum1 (#a:Int,#b:Int) -> Int {
return a + b
}
sum1(a:10, b: 20)
如果没有返回值,"->返回值"可以省略,或者也可以写成下面的格式:
-> Void
-> ()
func demo (a:Int) -> (){
print(a)
}