您的位置:首页 > 其它

【Foundation-10-3】#import <Foundation/NSArray.h>遍历

2015-10-11 23:05 369 查看
一般遍历(无返回)

- (void)enumerateObjectsUsingBlock:(void (^)(id obj,
NSUInteger idx, BOOL *stop))block
NS_AVAILABLE(10_6,
4_0);
- (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void
(^)(id obj, NSUInteger idx,
BOOL *stop))block
NS_AVAILABLE(10_6,
4_0);
- (void)enumerateObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts
usingBlock:(void (^)(id obj,
NSUInteger idx, BOOL *stop))block
NS_AVAILABLE(10_6,
4_0);

arr1 = @[@"1",@"2",@"3",@"4",@"2"];

//一般遍历
[arr1 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%@",obj);

}];

//正反遍历
[arr1 enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%@",obj);

}];
/*
NSEnumerationConcurrent = (1UL << 0),正
NSEnumerationReverse = (1UL << 1),反
*/

//有范围的,正反遍历
[arr1 enumerateObjectsAtIndexes:[NSIndexSet indexSetWithIndex:1] options:NSEnumerationConcurrent usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%@",obj);

}];


遍历(返回位置)

- (NSUInteger)indexOfObjectPassingTest:(BOOL (^)(id obj,
NSUInteger idx, BOOL *stop))predicate
NS_AVAILABLE(10_6,
4_0);
- (NSUInteger)indexOfObjectWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL
(^)(id obj, NSUInteger idx,
BOOL *stop))predicate
NS_AVAILABLE(10_6,
4_0);
- (NSUInteger)indexOfObjectAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts
passingTest:(BOOL (^)(id obj,
NSUInteger idx, BOOL *stop))predicate
NS_AVAILABLE(10_6,
4_0);

//遍历获取位置
NSUInteger path = [arr1 indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isEqualToString:@"2"]) {
return YES;//yes 就返回
}
return NO;
}];

//添加正反遍历
NSUInteger path2 = [arr1 indexOfObjectWithOptions:NSEnumerationReverse passingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
return NO;
}];

//添加 NSIndexSet
NSUInteger path3 = [arr1 indexOfObjectAtIndexes:[NSIndexSet indexSetWithIndex:2] options:NSEnumerationReverse passingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
return NO;
}];


遍历(返回索引集合)
- (NSIndexSet *)indexesOfObjectsPassingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate NS_AVAILABLE(10_6, 4_0);
- (NSIndexSet *)indexesOfObjectsWithOptions:(NSEnumerationOptions)opts passingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate NS_AVAILABLE(10_6, 4_0);
- (NSIndexSet *)indexesOfObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts
passingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate NS_AVAILABLE(10_6, 4_0);

NSIndexSet *index1 = [arr1 indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isEqualToString:@"2"]) {
return YES;
}
return NO;
}];

NSLog(@"%@",index1);

NSIndexSet *index2 = [arr1 indexesOfObjectsWithOptions:NSEnumerationReverse passingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
return NO;
}];

NSIndexSet *index3 = [arr1 indexesOfObjectsAtIndexes:[NSIndexSet indexSetWithIndex:2] options:NSEnumerationReverse passingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
return NO;
}];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: