gpt4 book ai didi

cocoa - 我可以在不创建临时数组的情况下移动 NSMutableArray 中的对象吗?

转载 作者:行者123 更新时间:2023-12-03 16:07:03 25 4
gpt4 key购买 nike

我以为我已经拥有了,

void shiftArray(NSMutableArray *mutableArray, NSUInteger shift)
{
for (NSUInteger i = 0; i < [mutableArray count]; i++) {
NSUInteger newIndex = (i + shift) % [mutableArray count];
[mutableArray exchangeObjectAtIndex:i withObjectAtIndex:newIndex];
}
}

当我移动一位时,将 0,1,2,3,4 变成 0,2,3,4,1。

预期结果为 4,0,1,2,3

我觉得我错过了一些明显的东西......

更新:谢谢 Matthieu,这就是我的函数现在的样子。

void shiftArrayRight(NSMutableArray *mutableArray, NSUInteger shift) {
for (NSUInteger i = shift; i > 0; i--) {
NSObject *obj = [mutableArray lastObject];
[mutableArray insertObject:obj atIndex:0];
[mutableArray removeLastObject];
}
}

我不知道你可以创建一个通用的 NSObject 并在其中放入一些子类。这只是指针,所以我想没问题,对吗?

很难改掉将这些对象视为东西的袋子而不是指向袋子的指针的习惯。

最佳答案

尝试类似的事情

for (NSUInteger i = shift; i > 0; i--) {
NSObject* obj = [mutableArray lastObject];
[mutableArray insertObject:obj atIndex:0];
[mutableArray removeLastObject];
}

警告 - 我尚未测试该代码,但这应该可以帮助您解决问题。

关于cocoa - 我可以在不创建临时数组的情况下移动 NSMutableArray 中的对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1438101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com