0

我正在开发一个应用程序,该应用程序适用于以循环路线分布的项目。入口点是随机的。

所以当整个事情开始时,我需要将所有位置的集合转移到一个随机索引。

示例(带有任意数据):

0:Hungry -> 1:Eating -> 2:Full -> 3:Vomiting*

如果我将它转移到索引2,我会得到以下新集合。

2:Full -> 3:Vomiting -> 0:Hungry -> 1:Eating

那么如何在Objective C中实现这一点呢?

*抱歉,但我需要另一个元素,因为三个元素似乎没有理解重点......

4

1 回答 1

0

我设法通过以下类别解决了问题NSOrderedSet

NSOrderedSet *newSet = [initialSet orderedSetByShiftingToIndex:2];

这是我的类别NSOrderedSet

@implementation NSOrderedSet(Shifting)

-(NSOrderedSet *)orderedSetByShiftingToIndex:(int)newIndex{

    if(newIndex == 0 || newIndex > self.count -1){
        return self;
    }

    NSMutableOrderedSet *result = [self mutableCopy];
    NSIndexSet *moveToEnd = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, newIndex -1)];

    int endIndex = result.count-1;

    [result moveObjectsAtIndexes:moveToEnd toIndex:endIndex];

    return result;
}

@end
于 2012-08-15T17:17:21.110 回答