字符串
在 Swift 中绝大多数的情况下,推荐使用 String 类型
使用 String
的原因
-
String
是一个结构体,性能更高-
String
目前具有了绝大多数 NSString 的功能 -
String
支持直接遍历
-
-
NSString
是一个OC
对象,性能略差 -
Swift
提供了String
和NSString
之间的无缝转换
遍历字符串
let str = "我要飞的更High"
for s in str {
print(s)
}
字符串拼接
let str1 = "zhangsan"
let str2 = "lisi"
let i = 10
print(str1 + str2)
print("\(str1) \(str2) \(i)")
- 阶段性小结
- 直接在
""
中使用\(变量名)
的方式可以快速拼接字符串 - 小伙伴们再也不要考虑
stringWithFormat
了
- 直接在
格式化字符串
for _ in 0...10 {
let str = String(format: "zhangsan - %04d", arguments: [arc4random_uniform(100)])
print(str)
}
- 阶段性小结
- 在实际开发中,如果需要指定字符串格式,可以使用
String(format:...)
的方式 - 注意:后面的参数需要放在一个数组中
- 在实际开发中,如果需要指定字符串格式,可以使用
String & Range 的结合
以下是超级费劲的代码
let str: String = "我要飞的更High"
var subStr = str.substringWithRange(Range<String.Index>(start: str.startIndex, end: str.endIndex))
print(subStr)
建议写法
let str1: NSString = "我要飞的更High"
print(str1.substringWithRange(NSMakeRange(0, 3)))
数组
简单体验
let arr = ["zhangsan", "lisi"]
print(arr)
// 遍历每一个元素
for a in arr {
print(a)
}
// 像 OC 一样打印
print(arr as NSArray)
数组中保存的对象类型
// 数组中保存的都是字符串
let arr = ["zhangsan", "lisi"]
// 数组中保存的是 NSObject
let arr1 = ["zhangsan", 1]
- 阶段性小结
- 数组使用 [] 定义,这一点与 OC 相同
- 如果初始化时,所有内容类型一致,择数组中保存的是该类型的内容
- 如果初始化时,所有内容类型不一致,择数组中保存的是
NSObject
常见数组操作
// 定义只能保存字符串类型数组
var array: [String]
// 初始化数组
array = ["zhangsan"]
// 添加元素
array.append("lisi")
print(array)
// 删除元素
array.removeAtIndex(1)
print(array)
// 删除所有元素
array.removeAll(keepCapacity: true)
print(array.capacity)
// 注意数组容量的变化
for i in 0..<10 {
array.append("\(i)")
print("\(array) --- \(array.capacity)")
}
// 实例化新的数组
var array2 = [String]()
array2.append("1")
array2.append("2")
// 拼接数组
array += array2
print(array)
- 阶段性小结
- 如果定义数组时指定了保存对象的类型,择不能向数组中添加其他类型的内容
- 可以使用
[String]()
-
let
定义的数组是不可变的
-
var
定义的数组是可变的
字典
/// 定义并实例化字典
var dict = [String: AnyObject]()
dict["name"] = "zhangsan"
dict["age"] = 18
print(dict)
// 设置相同 key,之前的数值会被覆盖
dict["name"] = "lisi"
print(dict)
// 删除某一个 key
dict.removeValueForKey("age")
print(dict)
dict["title"] = "manager"
print(dict)
// 遍历字典(k, v可以随便写)
for (k, v) in dict {
print("\(k) -- \(v)")
}
// 合并字典
var dict2 = ["name": "wangwu", "age": 80, "title": "boss"]
for (k, v) in dict2 {
dict.updateValue(v, forKey: k)
}
print(dict)