我有一个用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循环,就像上面这个问题最干净的解决方案一样?
答案 0 :(得分:7)
在Objective-C中,您可以使用带有NSNumber的for-in循环,如下所示:
NSArray *array = /*NSArray with NSNumber*/;
for (NSNumber *n in array) {
NSLog(@"i: %d", [n intValue]);
}
检查一下。
答案 1 :(得分:0)
大多数情况下,由于它不是Objective-C对象,因此不允许使用NSUInteger的NSMutableArray(又名无符号长)。
您可以使用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
}