NSMutableArray append un object avec la commande

J’ai un NSMUtableArray qui contient des éléments, par exemple:

 a, b, c, e

Et je veux append un object d derrière c et avant e . En d’autres termes, j’aimerais insérer un object dans un tableau sortingé (l’object peut également être un object personnalisé).

J’aimerais savoir: en plus d’utiliser for trouver la position, y a-t-il une autre méthode pour la mettre en œuvre? Il est préférable d’utiliser l’API iOS.

Merci.

Vous pouvez utiliser -[NSArray indexOfObject:inSortedRange:options:usingComparator:] pour demander à un NSArray l’index où un object doit être inséré en fonction d’une plage de tableau actuellement sortingée.

Par exemple, en supposant que le tableau entier est sortingé ::

 NSMutableArray *array = …; id newObject = …; NSComparator comparator = …; NSUInteger newIndex = [array indexOfObject:newObject inSortedRange:(NSRange){0, [array count]} options:NSBinarySearchingInsertionIndex usingComparator:comparator]; [array insertObject:newObject atIndex:newIndex]; 

Comme cette méthode utilise la recherche binary, elle est plus efficace que l’itération sur tous les éléments du tableau.

Le comparateur est un object bloc qui reçoit deux objects de type id et renvoie une valeur NSComparisonResult .

Pour injecter un élément à un index connu (position), utilisez

 - (void)insertObject:(id)anObject atIndex:(NSUInteger)index 

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSMuableArray_Class/Reference/Reference.html

Et pour trouver la position de l’object précédemment placé dans l’utilisation de NSMutableArray

 - (int)indexOfObject:(id)anObject 

NSMutableArray – Récupère un entier d’index de tableaux en effectuant une recherche avec une chaîne

Section Recherche d’objects dans un tableau
http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html

Je voudrais juste append le nouvel object à chaque extrémité et sortinger à nouveau le tableau. Si le tableau auquel vous ajoutez est déjà sortingé, le reclassement qui déplace un object sera à peu près aussi rapide que tout ce que vous implémenterez vous-même.

 NSMutableArray *things; // populated id newObject; ... [things addObject:newObject atIndex:0]; [things sortUsingSelector:@selector(compare:)];