ios – 枚举NSArray从givven索引开始搜索两种方式(没有环绕)

例.我有一个包含15个对象的数组.我想从给定的索引开始枚举.比如从索引5开始,然后是上面的索引,索引在下面,上面,下面……我不希望它环绕,而是停止并继续在未探索的方向.

所以我的例子中的索引顺序是.
5,6,4,7,3,8,2,9,1,10,11,12,13,14

如何才能做到这一点?

解决方法

这是一个更紧凑的实现,不需要创建子数组:
@implementation NSArray (Extensions)

- (void)enumerateFromIndex:(NSUInteger)index goBothWaysUsingBlock:(void (^)(id obj,NSUInteger idx,BOOL *stop))block
{
    BOOL stop = NO;
    for (NSUInteger i = 0; i < self.count && !stop; i++) {
        if (index + i < self.count) {
            block([self objectAtIndex:index + i],index + i,&stop);
        }
        if (i != 0 && !stop && i <= index) {
            block([self objectAtIndex:index - i],index - i,&stop);
        }
    }
}

@end

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...