在NSInteger中使用for-in循环吗?

问题描述 投票:3回答:2

我有一个填充了NSIntegers的NSMutableArray。我需要遍历数组。我可以做:

// given NSMutableArray *array of NSIntegers
NSUInteger n = [array count];
for (NSInteger i = 0; i < n; i++) {
  NSInteger x = [array objectAtIndex:i];
  // query SQLite WHERE id = x
}

但是,似乎for(数组中的对象)循环会更干净。 iOS 5不接受NSIntegers或NSNumbers作为for-in循环中的对象。我是否应该使用NSObjects遍历数组,在每次迭代期间将NSObject强制转换为NSInteger?还有另一种方法吗?还是像上面这样的for循环是最干净的解决此问题的方法?

ios5 for-in-loop
2个回答
7
投票

在Objective-C中,您可以对NSNumber使用for-in循环,如下所示:

    NSArray *array = /*NSArray with NSNumber*/;

    for (NSNumber *n in array) {
        NSLog(@"i: %d", [n intValue]);
    }

检查此。


0
投票

大多数情况下,由于它不是Objective-C对象,所以不允许使用NSUInteger的NSMutableArray(也称为无符号长)。

您可以使用c样式。

NSUInteger array[] = {value1,value2,value3};
for (int i=0; i<sizeof(array); i++) {
   NSInteger tc = array[i];
   // do whatever you want
}
© www.soinside.com 2019 - 2024. All rights reserved.