3

我有一个用 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 (object in array) 循环会更干净。iOS 5 不接受 NSIntegers 或 NSNumbers 作为 for-in 循环中的对象。我是否应该使用 NSObjects 循环遍历数组,在每次迭代期间将 NSObject 转换为 NSInteger?还有其他方法吗?还是像上面那样的 for 循环是这个问题的最干净的解决方案?

4

2 回答 2

7

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

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

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

看一下这个。

于 2012-04-24T07:39:12.650 回答
0

大多数情况下,您将不允许拥有 NSUInteger 的 NSMutableArray (又名 unsigned long),因为它不是 Objective-c 对象。

您可以使用 c 样式。

NSUInteger array[] = {value1,value2,value3};
int size = sizeof(array)/sizeof(array[0]);
for (int i=0; i<size; i++) {
   NSInteger value = array[i];
   // do whatever you want
}
于 2020-05-19T12:58:27.687 回答