2011-06-19 8 views
6

Cuando necesito añadir un número entero a una matriz que utilizaiPhone - agregando un CGPath a un NSMutableArray ... ¿cómo?

[myArray addObject:[NSNumber numberWithInt:myInt]]; 

pero ¿qué pasa CGPaths? ¿Cómo los agrego a la matriz?

necesito algo así como

"[NSValue valueWithCGPath:myPath]"... ???!!! 

alguna pista? gracias

+2

Es posible que desee echar un vistazo a esta pregunta: http://stackoverflow.com/questions/4240481/how-to-store-cggradientref-in-nsmutablearray – albertamg

+0

esto es brillante, gracias. Servirá para otras cosas que estoy haciendo, pero en este caso está fallando, porque después de agregar el objeto a la matriz lo archivo. Como CGPaths son CFType, el archivo se bloquea ... pero de todos modos, como dije, servirá para otros fines en la misma aplicación. ¡¡¡¡¡Gracias!!!!! +1 – SpaceDog

Respuesta

11

La forma más fácil si se puede atacar iOS 3.2 o superior es envolver el CGPathRef en un UIBezierPath:

[myArray addObject:[UIBezierPath bezierPathWithCGPath:myPath]]; 

Si tiene que soportar versiones anteriores de iOS, se puede utilizar un CFArray en lugar de NSArray porque CGPath deriva de CFType.

+0

Gracias. Lo he intentado pero mi problema es este: después de agregar todas las rutas a la matriz, usando el código que publicaste, lo archivo usando NSKeyedArchiver. Cuando intento desarchivar eso, se cuelga. ¿Hay alguna manera de convertir la ruta en otra cosa (en lugar de en UIBezierPath) y luego almacenarla en la matriz? Solo estoy construyendo esta matriz para fines de archivo. – SpaceDog

+0

¿Estás seguro de que el archivo realmente produce algo? Probablemente deberías publicar una pregunta por separado, cómo archivar y restaurar un UIBezierPath. Puede que tenga que almacenar los puntos y los metadatos de ruta manualmente. –

+0

Kendall - ** [aquí está] (http://stackoverflow.com/questions/6400284/iphone-storing-and-retrieving-a-uibezierpath-with-nskeyedarchiver-crashing) ** sin ninguna solución de trabajo. Sí, el archivo está almacenando los datos y los datos de bezier se cargan con éxito a la variable NSData al desarchivar, pero cuando intento decodificar los datos y producir un UIBezierPath, se bloquea. – SpaceDog

Cuestiones relacionadas