130 votes

Comment puis-je ajouter des objets CGPoint à un NSArray facilement?

J'ai environ 50 objets CGPoint qui décrivent quelque chose comme un "chemin", et je veux les ajouter à un NSArray. Ce sera une méthode qui renverra simplement le point CGPoint correspondant à un index donné. Je ne veux pas créer 50 variables comme p1 = ...; p2 = ..., et ainsi de suite. Existe-t-il un moyen simple de définir ces points «instantanément» lors de l'initialisation du NSArray avec des objets?

328voto

Jarret Hardie Points 36266

Avec UIKit Apple a ajouté le support pour CGPoint à NSValue , vous pouvez donc faire:

 NSArray *points = [NSArray arrayWithObjects:
                     [NSValue valueWithCGPoint:CGPointMake(5.5, 6.6)],
                     [NSValue valueWithCGPoint:CGPointMake(7.7, 8.8)],
                     nil];
 

Répertoriez autant d'instances [NSValue] que vous avez CGPoint et terminez la liste à zéro. Tous les objets de cette structure sont libérés automatiquement.

D'un autre côté, lorsque vous tirez les valeurs du tableau:

 NSValue *val = [points objectAtIndex:0];
CGPoint p = [val CGPointValue];
 

7voto

Tibidabo Points 10510

J'utilise ceci:

Créer un tableau:

 NSArray *myArray = @[[NSValue valueWithCGPoint:CGPointMake(30.0, 150.0)],[NSValue valueWithCGPoint:CGPointMake(41.67, 145.19)]];
 

Récupère le premier objet CGPoint:

 CGPoint myPoint = [myArray[0] CGPointValue];
 

2voto

Ramin Points 10412

Avez-vous regardé CFMutableArray ? Cela pourrait mieux fonctionner pour vous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X