2014-02-21 61 views
0

我有一個'MutableArray',我想通過在此處顯示的方法在索引中上下移動不同的對象:NSMutablearray move object from index to index在不改變數組大小的情況下將對象移動到NSMutableArray中

我的問題是,Xcode首先在'insertObject:atIndex:'之前處理'removeObjectAtIndex'方法,所以數組實際上收縮的大小使得某些過渡變得不可能。一個例子是,如果我的'數組'有3個成員,並且我將第三個成員的索引從2更改爲2,所以什麼都不應該發生,但實際上應用程序崩潰,因爲刪除後索引綁定現在是[0,1]。

下面是我用來實現數組移動的代碼,我還得到了一個解析問題:編譯器在queue.count後面的'if'語句處預期的標識符錯誤。任何幫助都將不勝感激。

-(void)makeRankChange:(NSMutableArray *)queue{ 
    for (int queueCount =0; queueCount<queue.count; queueCount++) { 
     QueueMember *member = [queue objectAtIndex:queueCount]; 
     if (member.rank != queueCount+1) { 
      if ([0<member.rank] && [member.rank < [queue.count(expected identifier here:Im not sure why)]]) { 
       [queue insertObject:member atIndex:member.rank-1]; 
       [queue removeObjectAtIndex:queueCount]; 
      } 

     } 
    } 
} 

回答

0

如何索引處替換值:

[queue replaceObjectAtIndex:queueCount withObject:member]; 

錯誤是最有可能從「[」括號內的if語句

+0

,這裏是不適用的。如果我的數組是[a,b,c,d,e],並且我想將e移到第二個位置。使用ur方法,結果會是[a,e,c,d,e],而我想[a,e,b,c,d] – snapfish

+0

對不起,我誤解了。你可以使用exchangeObjectAtIndex:withObjectAtIndex: –

+0

但如果我在e和b上使用它,那麼它就變成了[a,e,c,d,b],而我想[a,e,b,c,d]我只想移動將數組中的一個對象添加到新位置並保留訂單的其餘部分。 – snapfish

相關問題