gpt4 book ai didi

ios - 枚举NSArray从给定索引开始以两种方式搜索(环绕)

转载 作者:行者123 更新时间:2023-12-01 19:14:13 29 4
gpt4 key购买 nike

例。我有一个包含15个对象的数组。我想从给定的索引开始枚举。假设从索引5开始,然后是上方的索引,下方,上方,下方等的索引...我确实希望它绕起来。

因此,在我的示例中,索引的顺序将是这样。 5、6、4、7、3、8、2、9、1、10、0、11、14、12、13

具有类似于下一行的方法签名将是很棒的,但是我不要求批准一个答案:

- (void)enumerateFromIndex:(NSUInteger)index wrapAroundAndGoBothWays:(void (^)(id obj, NSUInteger idx, BOOL *stop))block

如何才能做到这一点?想要避免复制数组等。

在这篇文章中,我们使用 来做,而不会自动换行: Enumerate NSArray starting at givven index searching both ways (no wrap around)

最佳答案

从@omz借用的,这是包装的变体,它甚至更简单:

@implementation NSArray (Extensions)

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

@end

关于ios - 枚举NSArray从给定索引开始以两种方式搜索(环绕),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14354514/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com