我需要用位于某个位置的值对我的数组进行排序,而其余的值将具有某个初始位置。我这样做的方式可能太长了。
我有:
for(int i=0;i<100;i++)
[whatBondInFrame addObject:@"no"];
[whatBondInFrame insertObject:@"red" atIndex:0];
[whatBondInFrame insertObject:@"red" atIndex:1];
[whatBondInFrame insertObject:@"red" atIndex:2];
[whatBondInFrame insertObject:@"gray" atIndex:10];
[whatBondInFrame insertObject:@"gray" atIndex:11];
[whatBondInFrame insertObject:@"gray" atIndex:12];
[whatBondInFrame insertObject:@"red" atIndex:20];
[whatBondInFrame insertObject:@"red" atIndex:21];
[whatBondInFrame insertObject:@"red" atIndex:22];它是有效的,但如果我想放更多,我将需要更多的行。现在,如果我使用这样的东西:
whatBondInFrame = [NSArray arrayWithObjects: @"Red", @"Green", @"Blue", @"Yellow", nil];它会抹去我所有的东西,在这里我不能把它们放在正确的索引中。
有没有其他api可以在一行中将对象放在索引中(像这样,但带有索引?)
for循环不适合这个提议,因为元素是不对称的。
谢谢。
发布于 2012-01-23 02:14:18
最接近你想做的事情的api是NSMutableArray的:
- (void)replaceObjectsAtIndexes:(NSIndexSet *)indexes withObjects:(NSArray *)objects但是,没有“一行”方法可以从一组不相交的索引中创建NSIndexSet。
您是否真的关心“一行”(如果是,为什么?),或者关心维护一个常量索引/值对的集合以方便插入?如果是后者,您可以使用类似以下内容:
typedef struct { NSUInteger index, NSString *value } IndexValue;
IndexValue entries[] = { {0, @"red"}, {10, @"gray}, ... };
int count = sizeof(entries) / sizeof(IndexValue); // number of elements in the array
for(int ix = 0; ix < count; ix++)
[whatBondInFrame replaceObjectAtIndex:entries[ix].index withObject:entries[ix].value];现在,您有了定义索引/值对的单一位置,可以轻松地对其进行编辑。
https://stackoverflow.com/questions/8961051
复制相似问题