好吧,那么...
我在这里做一些假设。例如,我假设 g 和 h 无关紧要,因为您没有提到它们。
另外,我假设您实际上在做的是“旋转”数组。
即你有一个数组 [A, B, C, D, ... , W, X, Y, Z] 并且你想要......
d = [A, B, C, D, ... , W, X, Y, Z]
e = [Z, A, B, C, D, ... , W, X, Y]
f = [B, C, D, ... , W, X, Y, Z, A]
你似乎在某个地方循环,所以我猜你正试图从中取出数组。
我正在做另一个猜测,xCoordArray
即double[]
一个 C 数组而不是一个NSArray
.
我要做的是与此完全不同的事情。
首先,我将值存储在 NSArray 中。无论如何......我最初会做这样的事情。然后我会考虑重构它。
// I'll use d, e and f in the same places you have.
NSArray *dArray;
NSArray *eArray;
NSArray *fArray;
NSMutableArray *workingArray;
NSNumber *tempNumber;
// In reality I have no idea what this is, so it's just an example.
// I have used your numbers.
NSArray *xCoordArray = @[@10, @20, @30, @40];
// Your values for d are unchanged so just use the array...
dArray = xCoordArray;
// Your values for e are rotated "forward"...
workingArray = [NSMutableArray arrayWithArray:xCoordArray];
tempNumber = [workingArray lastObject];
[workingArray removeObject:tempNumber];
// this will "push" everything forward by one index value and place the
// previous "last object" at the front.
[workingArray insertObject:tempNumber atIndex:0];
eArray = workingArray;
// Your values for f are rotated "backwards"...
workingArray = [NSMutableArray arrayWithArray:xCoordArray];
tempNumber = workingArray[0];
[workingArray removeObject:tempNumber];
[workingArray addObject:tempNumber];
fArray = workingArray;
// results...
// dArray = @[@10, @20, @30, @40];
// eArray = @[@40, @10, @20, @30];
// fArray = @[@20, @30, @40, @10];
编辑
你可以通过使用这样的函数来重构它......
- (NSArray *)arrayByMovingTheFirstOrLastObject:(BOOL)first
fromArray:(NSArray *)inputArray
{
id tempObject;
NSMutableArray *workingArray = [NSMutableArray arrayWithArray:inputArray];
if (first) {
tempObject = workingArray[0];
[workingArray addObject:tempObject];
} else {
tempObject = [workingArray lastObject];
[workingArray insertObject:tempObject atIndex:0];
}
return workingArray;
}
// now you can do...
eArray = [self arrayByMovingFirstOrLastObject:NO fromArray:xCoordArray];
fArray = [self arrayByMovingFirstOrLastObject:YES fromArray:xCoordArray];
我不喜欢 100% 的名字,但这样的名字比你现在拥有的要好得多。