Swift數(shù)組遍歷
簡述:OC的數(shù)組遍歷和傳統(tǒng)的C語言很像宵睦,用下標
i
遍歷就可以(或者forin),而Swift中遍歷的方式和OC就稍有不同滥壕,今天在這里簡單說說OC和Swift遍歷數(shù)組的姿勢拌阴,本文講的應該不是很全面,歡迎評論中補充的烁!
OC中的數(shù)組遍歷
1. 下標遍歷
下標遍歷屬于入門級別的吧褐耳,但卻很重要;
- 使用場景1:代碼中需要用到index(下標)
- 使用場景2:在遍歷過程中需要增減成員
代碼:
NSArray *arr = @[@"q", @"w", @"e", @"r", @"t", @"y"];
for (int i = 0; i < arr.count; i++) {
NSLog(@"%@", arr[i]);
}
2. for ... in 遍歷
這個也屬于入門級別的
- 使用場景:工程中只用到數(shù)組中的成員渴庆,不需要下標的情況下
代碼:
NSArray *arr = @[@"q", @"w", @"e", @"r", @"t", @"y"];
for (NSString *str in arr) {
NSLog(@"%@", str);
}
3. 使用 enumerateObjectsUsingBlock:遍歷
OC系統(tǒng)提供了遍歷的方法铃芦,參數(shù)是一個block雅镊,懶人專用
參數(shù)解釋
- obj:數(shù)組中的對象
- idx:數(shù)組中的下標
- *stop 控制是否繼續(xù)進行本條遍歷,相當于控制continue
代碼:
NSArray *arr = @[@"q", @"w", @"e", @"r", @"t", @"y"];
[arr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
// *stop = YES, 相當于for循環(huán)中的continue
if (idx == 0) {
*stop = YES;
}
// return刃滓,相當于for循環(huán)中的 break
if (idx == 4) {
return;
}
NSLog(@"arr[%ld] = %@", idx, obj);
}];
Swift中的數(shù)組遍歷
1. 下標遍歷
Swift中對應的下標遍歷仁烹,和OC不一樣;..<
相當于數(shù)學中的左閉右開區(qū)間
咧虎,也就是≤ i <
卓缰;...
則意味著全閉,以此類推砰诵。
在Swift中征唬,是不支持C語言中for( ; ; ){};
這種遍歷的,用以下方式代替
let arr: [String] = ["q", "w", "e", "r", "t", "y"]
for i in 0..<arr.count {
let item = arr[i]
print("\(item)")
}
2. 只要數(shù)組中的對象
在Swift中沒有OC中的for...in
遍歷茁彭,以下這種方式代替
let arr: [String] = ["q", "w", "e", "r", "t", "y"]
for item in arr {
print("\(item)")
}
3. 只要數(shù)組中的對象
在Swift中我沒有找到OC中懶人專屬
方法总寒,不過依然有下標
和對象
同時遍歷的方法,開如下代碼吧:
let arr: [String] = ["q", "w", "e", "r", "t", "y"]
for (i, item) in arr.enumerated() {
print("arr[\(i)] = \(item)")
}
4. OC和Swift數(shù)組的反序遍歷
如果是OC
, 想要i
從9
遍歷到0
, 可以用while
, 也可以用for
, 舉個例子:
for (int i = 9; i >= 0; i--) {
NSLog(@"%dd", i);
}
如果是Swift
, 就要簡單得多, Swift
中的for
循環(huán)需要提供一個區(qū)間
, 我們可以對這個區(qū)間
進行操作, 比如說 :
for i in (0..<10).reversed() {
print(i)
}
// 這里的打印結(jié)果將是 9 8 7 6 5 4 3 2 1 0