使用Objective-C中,是有可能要经过一个阵列被基团: 为例:NSArray的枚举通过组
的NSArray * ARR = 1,2,3,... 100;
每10个对象,做一些事情,去
这样:
对象为0〜9:你做的东西与每个对象和之后的10°对象,你做最后一个动作
然后对象10〜19:你做的东西与每个对象和之后的19°反对你做最后一个动作
依此类推,直到最后目标
谢谢您的帮助
使用Objective-C中,是有可能要经过一个阵列被基团: 为例:NSArray的枚举通过组
的NSArray * ARR = 1,2,3,... 100;
每10个对象,做一些事情,去
这样:
对象为0〜9:你做的东西与每个对象和之后的10°对象,你做最后一个动作
然后对象10〜19:你做的东西与每个对象和之后的19°反对你做最后一个动作
依此类推,直到最后目标
谢谢您的帮助
是这样的:
for (int i = 0; i < arr.count; i++)
{
[self doSomethingWithArray];
if (i % 10 == 0)
[self doSomethingElse];
}
不,它是不可能在Objective-C与内建的功能相匹配的准确描述。有粗略的方法可以通过与您的确切描述相匹配的循环来完成。
但是,如果您事先知道要进行此类操作,请定义您自己的数据结构。创建一个NSObject
子类,在其中定义您的项目(您正在谈论的10个项目)。然后在数组中,您可以直接取出包含您定义的NSObject
的每个实例。
你是对的,只要安德烈的答案可以适用于任何数组,立即没有任何子类。无论如何,我感谢你的帮助。 – hungry 2014-08-30 14:21:30
“按组枚举”;如果你想完全按照规定,你可以继承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;
@end
的NSArray + 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)];
}
@end
肯定。只需编写代码即可索引。你知道如何编写'for'循环,对吗? – 2014-08-30 13:56:07