使用Objective,是否可以按组遍历数组:例如:
NSArray *arr = 1,2,3,....100;
每10个物体做一件事,然后继续
因此:
对象0到9:对每个对象执行一些操作,在10°对象之后执行最后一个操作
然后对象10到19 :对每个对象做一些事情,在19°对象之后做最后一个动作
以此类推直到最后一个对象
谢谢你的帮助
发布于 2014-08-30 13:58:16
就像这样:
for (int i = 0; i < arr.count; i++)
{
[self doSomethingWithArray];
if (i % 10 == 0)
[self doSomethingElse];
}发布于 2014-08-30 14:02:15
不,这是不可能的目标-C与内置的功能,符合您的确切描述。有一些简单的方法可以通过循环来完成,这与你的描述完全一致。
但是,如果您事先意识到您将进行这种类型的操作,请定义您自己的数据结构。创建一个NSObject子类,在其中定义项(您正在讨论的10个项)。然后,在数组中,您可以直接取出它的每个实例,其中包含您定义的NSObject。
发布于 2014-08-30 16:43:03
“按组枚举”;如果您想要完全如愿以偿,您可以子类NSEnumerator。
例如:
在应用程序代码中:
#import "NSArray+SubarrayEnumerator.h"
NSArray *arr = ...;
for(NSArray *grp in [arr subarrayEnumeratorEach:10]) {
// do what you want.
}NSArray+SubarrayEnumerator.h
#import <Foundation/Foundation.h>
@interface NSArray (SubarrayEnumerator)
- (NSEnumerator *)subarrayEnumeratorEach:(NSUInteger)perPage;
@endNSArray+SubarrayEnumerator.m
#import "NSArray+SubarrayEnumerator.h"
@interface _NSArraySubarrayEnumeratorEach : NSEnumerator
@property (assign, nonatomic) NSUInteger cursor;
@property (assign, nonatomic) NSUInteger perPage;
@property (strong, nonatomic) NSArray *src;
@end
@implementation NSArray (SubarrayEnumerator)
- (NSEnumerator *)subarrayEnumeratorEach:(NSUInteger)perPage {
_NSArraySubarrayEnumeratorEach *enumerator = [[_NSArraySubarrayEnumeratorEach alloc] init];
enumerator.perPage = perPage;
enumerator.src = self;
return enumerator;
}
@end
@implementation _NSArraySubarrayEnumeratorEach
- (id)nextObject {
NSUInteger start = _cursor;
if(start >= _src.count) {
return nil;
}
NSUInteger count = MIN(_perPage, _src.count - start);
_cursor += _perPage;
return [_src subarrayWithRange:NSMakeRange(start, count)];
}
@endhttps://stackoverflow.com/questions/25583101
复制相似问题