1

当“for in”循环运行时,是否可以查找下一个“字符串”的值?

假设您有一个名为 myArrayOfStrings 的数组,其中包含以下值:

0“苹果”1“梨”2“橙”3“葡萄”

您想使用“for in”循环遍历数组:

for (NSString* string in myArrayOfStrings) { NSLog(string); }

无论如何,在“for in”循环内部是否可以在运行时查看下一个字符串的值?可以说它当前正在查看 1 "Pear" 字符串。无论如何要查找下一个字符串 2“Orange”的值吗?

4

1 回答 1

4

虽然在目标 c 中使用 foreach 风格的循环无法直接实现这一点,但有几种方法可以完成相同的任务。

请假设

NSArray *myArrayOfStrings = @[@"Apple", @"Pear", @"Orange", @"Grape"];

标准 For 循环

for (int i = 0; i < [myArrayOfStrings count]; i++) {
    NSString *string = [myArrayOfStrings objectAtIndex:i];
    NSString *next_string = @"nothing";
    if (i + 1 < [myArrayOfStrings count]) { // Prevent exception on the final loop
        next_string = [myArrayOfStrings objectAtIndex:i + 1];
    }
    NSLog(@"%@ comes before %@", string, next_string);
}

对象枚举

[myArrayOfStrings enumerateObjectsUsingBlock:^(NSString *string, NSUInteger idx, BOOL *stop) {
    NSString *next_string = @"nothing";
    if (idx + 1 < [myArrayOfStrings count]) { // Prevent exception on the final loop
        next_string = [myArrayOfStrings objectAtIndex:idx + 1];
    }
    NSLog(@"%@ comes before %@", string, next_string);
}];

这两个选项都输出:

Apple comes before Pear
Pear comes before Orange
Orange comes before Grape
Grape comes before nothing
于 2013-05-15T22:18:56.583 回答