1、关于NSString的方法
官方提供的方法:
/* In the enumerate methods, the blocks will be invoked inside an autorelease pool, so any values assigned inside the block should be retained.
*/
- (void)enumerateSubstringsInRange:(NSRange)range options:(NSStringEnumerationOptions)opts usingBlock:(void (^)(NSString * __nullable substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop))block NS_AVAILABLE(10_6, 4_0);
- (void)enumerateLinesUsingBlock:(void (^)(NSString *line, BOOL *stop))block NS_AVAILABLE(10_6, 4_0);
我们可以用来一行一行的读取一个txt文档的内容,并使用的
// 字符串
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"girl" ofType:@"txt"];
NSData *fileData = [NSData dataWithContentsOfFile:filePath];
NSString *fileStr = [[NSString alloc]initWithData:fileData encoding:NSUTF8StringEncoding];
//一行一行的读取
[fileStr enumerateLinesUsingBlock:^(NSString * _Nonnull line, BOOL * _Nonnull stop) {
NSLog(@"%@\n",line);
}];
// 一个字符一字符的读取
[fileStr enumerateSubstringsInRange:NSMakeRange(0, fileStr.length) options:NSStringEnumerationByWords usingBlock:^(NSString * _Nullable substring, NSRange substringRange, NSRange enclosingRange, BOOL * _Nonnull stop) {
NSLog(@"tmp111===%@",substring);
}];
打印结果如下:
2016-06-22 11:51:58.981 test12390-[7270:91135] 1、小女孩
2016-06-22 11:51:58.982 test12390-[7270:91135] く__,.ヘヽ. / ,ー、 〉
2016-06-22 11:51:58.982 test12390-[7270:91135] \ ', !-─‐-i / /´
2016-06-22 11:51:58.982 test12390-[7270:91135] /`ー' L//`ヽ、
2016-06-22 11:51:58.982 test12390-[7270:91135] / /, /| , , ',
2016-06-22 11:51:58.983 test12390-[7270:91135] イ / /-‐/ i L_ ハ ヽ! i
2016-06-22 11:51:58.983 test12390-[7270:91135] レ ヘ 7イ`ト レ'ァ-ト、!ハ| |
2016-06-22 11:51:58.983 test12390-[7270:91135] !,/7 'ゞ' ´i__rハiソ| |
2016-06-22 11:51:58.983 test12390-[7270:91135] |.从" _ ,,,, / |./ |
2016-06-22 11:51:58.984 test12390-[7270:91135] レ'| i>.、,,__ _,.イ / .i |
2016-06-22 11:51:58.984 test12390-[7270:91135] レ'| | / k_7_/レ'ヽ, ハ. |
2016-06-22 11:51:58.984 test12390-[7270:91135] | |/i 〈|/ i ,.ヘ | i |
2016-06-22 11:51:58.984 test12390-[7270:91135] .|/ / i: ヘ! \ |
2016-06-22 11:51:58.984 test12390-[7270:91135] kヽ>、ハ _,.ヘ、 /、!
2016-06-22 11:51:58.985 test12390-[7270:91135] !'〈//`T´', \ `'7'ーr'
2016-06-22 11:51:58.985 test12390-[7270:91135] レ'ヽL__|___i,___,ンレ|ノ
2016-06-22 11:51:58.985 test12390-[7270:91135] ト-,/ |___./
2016-06-22 11:51:58.985 test12390-[7270:91135] 'ー' !_,.:
和我txt文档的内容一模一样。
2、关于NSArray的方法的使用
官方提供的方法:
- (void)enumerateObjectsUsingBlock:(void (^)(ObjectType obj, NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6, 4_0);
- (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (^)(ObjectType obj, NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6, 4_0);
- (void)enumerateObjectsAtIndexes:(NSIndexSet *)s options:(NSEnumerationOptions)opts usingBlock:(void (^)(ObjectType obj, NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6, 4_0);
可以使用这个方法枚举出来数组中的对象,并且好像使用了多核的优势比for循环要效率要高
NSArray *tmpAry = @[@"1",@"2",@"3"];
/**
NSEnumerationConcurrent 当前的排序状态
NSEnumerationReverse 倒序排列
*/
[tmpAry enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog(@"tmpAry===%@\n",obj);
}];
倒序枚举结果:
2016-06-22 11:51:59.072 test12390-[7270:91135] tmpAry===3
2016-06-22 11:51:59.072 test12390-[7270:91135] tmpAry===2
2016-06-22 11:51:59.072 test12390-[7270:91135] tmpAry===1
3、关于NSDictionary的方法的使用
官方方法:
- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(KeyType key, ObjectType obj, BOOL *stop))block NS_AVAILABLE(10_6, 4_0);
- (void)enumerateKeysAndObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (^)(KeyType key, ObjectType obj, BOOL *stop))block NS_AVAILABLE(10_6, 4_0);
这个方法也是枚举遍历方法,可以枚举这个字典里面key和value值
// 字典
NSDictionary *tmpdic = @{@"1":@"q",@"2":@"w"};
[tmpdic enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
NSLog(@"tmpdis:key=%@ value=%@\n",key,obj);
}];
/**
NSEnumerationConcurrent 当前的排序状态
NSEnumerationReverse 倒序排列
*/
[tmpdic enumerateKeysAndObjectsWithOptions:NSEnumerationReverse usingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
NSLog(@"tmpdis2:key=%@ value=%@\n",key,obj);
}];
枚举打印结果:
2016-06-22 12:12:51.643 test12390-[7539:104971] tmpdis:key=1 value=q
2016-06-22 12:12:51.643 test12390-[7539:104971] tmpdis:key=2 value=w
2016-06-22 12:12:51.643 test12390-[7539:104971] tmpdis2:key=1 value=q
2016-06-22 12:12:51.643 test12390-[7539:104971] tmpdis2:key=2 value=w
字典好像没什么区别,郁闷!!
这是我终结的一部分,算是抛砖引玉吧,大家可以研究一下!