C'est un simple pull pour rafraîchir le cas. J'ai des données chargées dans la table et ai un tableau de données mutable au back-end, je reçois un tableau de nouveldatatables et je veux append ce tableau complet au début du tableau existant.
Une solution de contournement consiste à créer un nouveau tableau avec datatables nouvellement arrivées, puis append le tableau précédent à l'aide de la méthode addObjectsFromArray:
Est-il une solution de contournement pour append un nouveau tableau de données au début du tableau précédent directement?
D'abord, construisez un NSIndexSet
.
NSIndexSet *indexes = [NSIndexSet indexSetWithIndexesInRange: NSMakeRange(0,[newArray count])];
Maintenant, faites usage de NSMutableArray
de NSMutableArray
insertObjects:atIndexes:
[oldArray insertObjects:newArray atIndexes:indexes];
Alternativement, il y a cette approche:
oldArray = [[newArray arrayByAddingObjectsFromArray:oldArray] mutableCopy];
NSMutableArray
offre la insertObjects:atIndexes:
mais il est plus facile d'append comme vous l'avez suggéré en utilisant addObjectsFromArray:
-insertObject:atIndexes:
est assez facile, et devrait (je crois) être plus efficace que l'utilisation de -addObjects
et de swap-arrays. Ça finirait probablement par ressembler à ceci:
[existingResults addObjects:newResults atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, newResults.count)]]`
La création d'un nouveau tableau est probablement la meilleure solution, mais vous pouvez également utiliser une boucle
NSUInteger index; index = 0; for ( id item in sourceArray ) { [destArray insertObject:item atIndex:index]; index++; }
Juste moyen simple:
NSMutableArray *arrayTmp = [firstArr addObjectsFromArray:myArray]; myArray = arrayTmp;