web-dev-qa-db-fra.com

Comment créer un tableau de chaînes dans Objective C pour iPhone

J'essaie de créer un tableau de chaînes qui peuvent être randomisées et limitées à un certain nombre x de chaînes.

Si le tableau pouvait être randomisé, je pourrais choisir les premières chaînes x et cela fonctionnerait bien.

J'essaie d'utiliser du code comme celui-ci actuellement

NSString *statements[9];
statements[0] = @"hello";

Cela semble fonctionner, mais le tableau semble être plein de données sur les ordures.

Quelqu'un peut-il m'aider dans la bonne direction. (L'allocation de mémoire est-elle mal effectuée?

Merci

31
Chris Barry

Voulez-vous un tableau avec neuf chaînes?

[NSArray arrayWithObjects: @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", nil]
68
Justin Gallagher

À partir de Xcode 4.4, vous pouvez utiliser des littéraux de tableau, qui sont beaucoup plus propres et plus faciles à lire. Vous n'avez plus besoin d'inclure "zéro". Par exemple:

NSArray *myArray = @[@"1", @"2", @"3", @"4", @"5"];
53
Johnny Oshika

Tous les tableaux C automatiques comme celui-ci seront pleins de déchets jusqu'à ce que vous les remplissiez. Tant qu'il ne se remplit pas de déchets plus tard, tout fonctionne comme prévu. Cependant, Cocoa inclut la classe NSArray qui est plus courante à utiliser pour les tableaux d'objets (car il gère correctement la mémoire et fonctionne avec le reste du framework et tout cela).

2
Chuck

Juste un conseil, il n'est pas nécessaire de mélanger le contenu du tableau. Il suffit de randomiser l'accès. Pour chaque carte que vous souhaitez choisir dans le jeu, choisissez un nombre aléatoire et sélectionnez la carte à cet index. Ensuite, prenez la première carte et placez-la là où se trouvait la carte que vous venez de choisir.

Si vous vraiment voulez trier le tableau, vous pouvez le faire avec très peu de code en utilisant -sortedArrayUsingSelector: où votre méthode de comparaison renvoie NSOrderedAscending ou NSOrderedDescending au hasard.

1
NSResponder