2013-03-04 9 views
8

私はNSArrayを持っています。私はその配列の中にいくつかの価値があります。NSArrayの値インデックスを交換する方法

NSArray *testArray = [NSArray arrayWithObjects:@"Test 1", @"Test 2", @"Test 3", @"Test 4", @"Test 5", nil]; 
NSLog(@"%@", testArray); 

結果は怒鳴るようなものです:

(
"Test 3", 
"Test 5", 
"Test 1", 
"Test 2", 
"Test 4" 
) 

再初期化配列せずにそれを行うにはどのような方法があります:

(
"Test 1", 
"Test 2", 
"Test 3", 
"Test 4", 
"Test 5" 
) 

は今、私はこのような結果が欲しいですか?この配列の値を入れ替えることはできますか?

+2

号にNSArrayは、静的ですそれに何かを加えることができ、エントリーをシャッフルするだけです。 'NSMutableArray'には関数 'sortUsingSelector'があります。この方法では、独自の並べ替え順序を決定できます。 – ATaylor

+0

@ATaylor:NSMutableArrayでは可能ですか? –

+0

@ B.M.W。 NSMutableArrayで可能です。 –

答えて

6

あなたの配列は、それ以外の方法が許可されていない書き込みNSMutableArrayのインスタンスでなければなりません(NSArrayを読み取り専用である)

使用以下の方法:

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject 

は、あなたが保存するための一時的なストレージが必要になります

id tempObj = [testArray objectAtIndex:index]; 
[testArray replaceObjectAtIndex:index withObject:[testArray objectAtIndex:otherIndex]]; 
[testArray replaceObjectAtIndex:otherIndex withObject:tempObj]; 
+0

ありがとうgiorashc ....それは魅力のような仕事です。手伝ってくれてありがとう。 –

+19

'exchangeObjectAtIndex:withObjectAtIndex:'を使用すると、一時オブジェクトは必要ありません。 –

+0

@MartinR:それを試してみる...助けてくれてありがとう... –

7

使用NSMutableArrayの 2を交換する:オブジェクトが置き換えられますオブジェクト。

- exchangeObjectAtIndex:withObjectAtIndex: 

これは、与えられたインデックス(IDX1とIDX2)

IDX1
インデックスIDX2でオブジェクトを置換すると、オブジェクトのインデックスで配列内のオブジェクトを交換します。

idx2
インデックスidx1のオブジェクトを置き換えるオブジェクトのインデックス。

SWIFT

func exchangeObjectAtIndex(_ idx1: Int, 
     withObjectAtIndex idx2: Int) 

のObjective-C 使用NSMutableArrayの

- (void)exchangeObjectAtIndex:(NSUInteger)idx1 
       withObjectAtIndex:(NSUInteger)idx2 
そのままあなたもならないので

Swapping elements in an NSMutableArray

関連する問題