Mi aplicación implica que un usuario puede arrastrar elementos específicos, como controles deslizantes de volumen y vistas de UIImage. Mi objetivo es poder guardar las ubicaciones de los elementos para que el usuario no tenga que arrastrar los elementos nuevamente después del relanzamiento. Lamentablemente, he visto errores a lo largo de la ruta 'CGRect rect = item.frame
guardando NSuserDefaults
o NSKeyedArchiver
'. ¿Cualquier otra sugerencia?NSKeyedArchiver/NSuserDefaults - guardar un CGRect
Respuesta
Si está utilizando el archivado por clave en iPhone, UIKit es compatible específicamente con una adición que se ve así: -encodeCGRect:forKey:
y hace exactamente lo que desea. Consulte los documentos de Apple para NSCoder's UIKit additions.
Si usa NSUserDefaults, no puede darse el lujo de utilizar un codificador explícito para CGRects, pero como algunas otras respuestas dicen, puede guardarlos como cadenas usando NSStringFromCGRect()
y su reverso.
Es probable que codificar utilizando CGRect
NSData
y luego almacenar NSData
objeto utilizando NSUserDefaults
o NSKeyedArchiver
.
No estoy seguro de a qué errores se refiere exactamente en su pregunta, tal vez se necesita más explicación.
Debe convertir los flotantes en el CGRect a NSNumbers y luego ponerlos en un Dictionary.
Si necesita almacenar una gran cantidad de CGRects, recomiendo crear una clase ligera con los elementos CGRect como atributos NSNumber archivables. Crea un inicializador que tome un CGRect. A continuación, escriba los métodos de protocolo de NSCoder rápidos para que todo el objeto se pueda archivar
De esta forma puede convertir, almacenar y recuperar los CGRects de manera rápida y sencilla.
Puede usar NSStringFromgCGRect() y CGRectFromString() para almacenarlos.
- 1. centrando un CGRect en una vista
- 2. Obteniendo CGRect de la matriz
- 3. NSDictionary no almacena correctamente CGRect?
- 4. ¿Hay alguna diferencia entre un CGRect y un NSRect?
- 5. Restar CGRect de CGRect - pieza más grande de uno que no contiene el otro
- 6. ¿Cómo funciona? (CGRect) convertRect: (CGRect) rect toView: (UIView *) ver el trabajo
- 7. CGRect de un objeto en una vista secundaria en UITableViewCell en uitable a CGRect con respecto al self.view
- 8. CGRect a un NSValue en una matriz y viceversa
- 9. CGRect var como valor de propiedad?
- 10. tratando de pasar a CGRect performSelector withObject
- 11. ¿Cómo saber si dos CGRect se cruzan?
- 12. Guardar y restaurar CGContext
- 13. Guardar un archivo temporal
- 14. Guardar un SecureString
- 15. Cómo guardar un CookieJar?
- 16. Guardar un NSArray
- 17. ¿Cómo es que NSRect y CGRect son tipos incompatibles?
- 18. Cómo almacenar los valores de CGRect en NSMutableArray?
- 19. UILabel obtener CGRect para la subcadena de texto
- 20. Cómo almacenar CGRect y otras cosas en los datos centrales
- 21. ¿Es posible NSLog C Structs (como CGRect o CGPoint)?
- 22. Cómo guardar un procedimiento almacenado?
- 23. ¿Guardar un NSView en un archivo png?
- 24. Cómo guardar un hash en un CSV
- 25. Guardar un TObject en un archivo
- 26. iOS: Guardar imagen con resolución personalizada
- 27. Guardar un archivo y crear directorios automáticamente
- 28. Java: Guardar StreamResult en un archivo
- 29. Guardar y recuperar un UIImage en CoreData
- 30. Guardar un NSMutableArray utilizando NSUserDefaults no trabajar
Un comentario con los controles descendentes sería bueno. Si nada más, me deja saber por qué estoy equivocado. Tomé el enfoque de que el 'CGRect' necesita almacenarse como números para que puedan manipularse como números. Si necesita administrar activamente un conjunto grande de 'CGRect's, una clase contenedora ahorra mucho tiempo y esfuerzo en el largo plazo. – TechZen