Tengo alrededor de 50 objetos CGPoint que describen algo así como una "ruta", y quiero agregarlos a un NSArray. Va a ser un método que simplemente devolverá el CGPoint correspondiente para un índice dado. No quiero crear 50 variables como p1 = ...; p2 = ..., y así sucesivamente. ¿Hay alguna manera sencilla que me permita definir esos puntos "instantáneamente" al inicializar NSArray con objetos?¿Cómo puedo agregar objetos CGPoint a un NSArray de la manera más fácil?
128
A
Respuesta
317
Con UIKit
Apple ha añadido soporte para CGPoint a NSValue
, por lo que puede hacer:
NSArray *points = [NSArray arrayWithObjects:
[NSValue valueWithCGPoint:CGPointMake(5.5, 6.6)],
[NSValue valueWithCGPoint:CGPointMake(7.7, 8.8)],
nil];
lista como muchos [NSValue] casos y cuando tenga CGPoint, y al final de la lista en nulo. Todos los objetos en esta estructura se lanzan automáticamente.
Por otro lado, cuando se está tirando de los valores de la matriz:
NSValue *val = [points objectAtIndex:0];
CGPoint p = [val CGPointValue];
2
¿Ha echado un vistazo a CFMutableArray
? Eso podría funcionar mejor para ti.
7
utilizo este:
Crear matriz:
NSArray *myArray = @[[NSValue valueWithCGPoint:CGPointMake(30.0, 150.0)],[NSValue valueWithCGPoint:CGPointMake(41.67, 145.19)]];
Obtener primero objeto CGPoint:
CGPoint myPoint = [myArray[0] CGPointValue];
2
También puede escribir esto en un estándar de C/C++ manera:
CGPoint oldschool[] = { CGPointMake(5.5, 6.6),
CGPointMake(7.7, 8.8) };
CGPoint p2 = oldschool[1];
Cuestiones relacionadas
- 1. Cómo agregar objetos a un NSArray usando for loop?
- 2. ¿La mejor manera de ordenar un NSArray de objetos NSDictionary?
- 3. Finding objeto más cercano a CGPoint
- 4. ¡Tiene que haber una manera más fácil de manejar matrices!
- 5. ¿La manera más fácil de agregar GWT a una aplicación Spring MVC?
- 6. ¿Cuál es la manera más fácil de agregar un elemento al final de la lista?
- 7. ¿La manera más fácil de hacer un iterador cíclico (circulador)?
- 8. La manera más fácil de escribir y leer un XML
- 9. ¿Cómo puedo convertir un NSData a NSArray?
- 10. ¿Cuál es una manera fácil de romper un NSArray con más de 4000 objetos en múltiples matrices con 30 objetos cada uno?
- 11. ¿Forma más fácil de agregar métodos a los objetos jQuery que .data()?
- 12. Agregar 2 o más objetos a JFrame
- 13. NSArray lleno de objetos bool
- 14. ¿Cuál es la forma más fácil de eliminar NSStrings vacíos de un NSArray?
- 15. ¿Cómo puedo llenar un NSArray dinámicamente?
- 16. CGPoint relativo a la vista
- 17. ¿La manera más fácil de mostrar la ubicación?
- 18. ¿Cómo puedo agregar datos de manera flexible a los objetos Moose?
- 19. ¿Puedo agregar propiedades arbitrarias a objetos DOM?
- 20. NSArray de objetos y Casting
- 21. ¿La manera más fácil de administrar mi CLASSPATH?
- 22. La manera más fácil de convertir "a/b/c" a ["a/b/c", "a/b", "a"]
- 23. ¿NSArray copia objetos?
- 24. Manera más fácil de mover un proyecto en Eclipse
- 25. yaml-cpp La manera más fácil de iterar a través de un mapa con valores indefinidos
- 26. Agregar elementos NSArray
- 27. ¿La manera más fácil de empaquetar/minificar múltiples archivos javascript?
- 28. ¿La manera más fácil de clasificar los nodos DOM?
- 29. La manera más fácil de leer un archivo de configuración perteneciente a otra aplicación
- 30. La manera más fácil de recuperar XmlHttpRequest entre navegadores
Genial. ¿Cómo funcionaría eso para cualquier tipo de tipo escalar? – Thanks
Para los tipos escalares, eche un vistazo a NSNumber ... verá constructores como numberWithBool: numberWithInteger: numberWithFloat :, numberWithUnsignedShort :, etc. –
Alternativamente puede usar NSValue directamente: [NSValue valueWithBytes: & someStructSockaddr objCType: @encode (struct sockaddr)] por ejemplo. –