字符串
在 Swift 中絕大多數(shù)的情況下,推薦使用 String 類型
使用 String 的原因
-
String是一個結(jié)構(gòu)體,性能更高-
String目前具有了絕大多數(shù) NSString 的功能 -
String支持直接遍歷
-
-
NSString是一個OC對象,性能略差 -
Swift提供了String和NSString之間的無縫轉(zhuǎn)換
遍歷字符串
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)")
- 階段性小結(jié)
- 直接在
""中使用\(變量名)的方式可以快速拼接字符串 - 小伙伴們再也不要考慮
stringWithFormat了
- 直接在
格式化字符串
for _ in 0...10 {
let str = String(format: "zhangsan - %04d", arguments: [arc4random_uniform(100)])
print(str)
}
- 階段性小結(jié)
- 在實際開發(fā)中,如果需要指定字符串格式,可以使用
String(format:...)的方式 - 注意:后面的參數(shù)需要放在一個數(shù)組中
- 在實際開發(fā)中,如果需要指定字符串格式,可以使用
String & Range 的結(jié)合
以下是超級費(fèi)勁的代碼
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)))
數(shù)組
簡單體驗
let arr = ["zhangsan", "lisi"]
print(arr)
// 遍歷每一個元素
for a in arr {
print(a)
}
// 像 OC 一樣打印
print(arr as NSArray)
數(shù)組中保存的對象類型
// 數(shù)組中保存的都是字符串
let arr = ["zhangsan", "lisi"]
// 數(shù)組中保存的是 NSObject
let arr1 = ["zhangsan", 1]
- 階段性小結(jié)
- 數(shù)組使用 [] 定義,這一點與 OC 相同
- 如果初始化時,所有內(nèi)容類型一致,擇數(shù)組中保存的是該類型的內(nèi)容
- 如果初始化時,所有內(nèi)容類型不一致,擇數(shù)組中保存的是
NSObject
常見數(shù)組操作
// 定義只能保存字符串類型數(shù)組
var array: [String]
// 初始化數(shù)組
array = ["zhangsan"]
// 添加元素
array.append("lisi")
print(array)
// 刪除元素
array.removeAtIndex(1)
print(array)
// 刪除所有元素
array.removeAll(keepCapacity: true)
print(array.capacity)
// 注意數(shù)組容量的變化
for i in 0..<10 {
array.append("\(i)")
print("\(array) --- \(array.capacity)")
}
// 實例化新的數(shù)組
var array2 = [String]()
array2.append("1")
array2.append("2")
// 拼接數(shù)組
array += array2
print(array)
- 階段性小結(jié)
- 如果定義數(shù)組時指定了保存對象的類型,擇不能向數(shù)組中添加其他類型的內(nèi)容
- 可以使用
[String]() -
let定義的數(shù)組是不可變的 -
var定義的數(shù)組是可變的
字典
/// 定義并實例化字典
var dict = [String: AnyObject]()
dict["name"] = "zhangsan"
dict["age"] = 18
print(dict)
// 設(shè)置相同 key,之前的數(shù)值會被覆蓋
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)