¿Cómo puedo codificar una subclase personalizada init
para NSManagedObject
? Me gustaría algo como initItemWithName:Volume:
, por ejemplo. Donde Item
es una subclase NSManagedObject
con dos atributos, name
y volume
.Inicial personalizada para una subclase NSManagedObject
Respuesta
Carlos,
Como Nenad Mihajlovic sugirió que podría crear una categoría para esto.
Así, por ejemplo, si tiene una clase Item
, puede crear una categoría llamada Item+Management
y colocar allí el código de creación. Aquí puedes encontrar un ejemplo simple.
// .h
@interface Item (Management)
+ (Item*)itemWithName:(NSString *)theName volume:(NSNumber*)theVolume inManagedObjectContext:(NSManagedObjectContext *)context;
@end
// .m
+ (Item*)itemWithName:(NSString *)theName volume:(NSNumber*)theVolume inManagedObjectContext:(NSManagedObjectContext *)context
{
Item* item = (Item*)[NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:context];
theItem.name = theName;
theItem.volume = theVolume;
return item;
}
Cuando se desea crear un nuevo artículo, realice una importación como
#import "Item+Management.h"
y utilizar como esto
Item* item = [Item itemWithName:@"test" volume:[NSNumber numberWithInt:10] inManagedObjectContext:yourContext];
// do what you want with item...
Este enfoque es muy flexible y muy fácil de mantener durante la desarrollo de aplicaciones.
Puede encontrar más información en Stanford Course Lecture 14 código de muestra. Además, vea también videos gratis en iTunes de Stanford (si tiene una ID de Apple).
Espero que ayude.
P.S. En aras de la simplicidad, supongo que name
es un NSString
y volume
es un NSNumber
. Para volume
, podría ser mejor utilizar el tipo NSDecimalNumber
.
Muchas gracias Flex_Addicted !! Pero, una pregunta: ¿por qué tenemos que crear estos métodos en una categoría y no en la subclase 'NSManagedObject'? Tengo varias clases y necesitaría al menos 7 categorías. – Carlos
Puede encontrar información en http://stackoverflow.com/questions/9297101/nsmanagedobjects-with-categories y en http://blog.chrismiles.info/2011/06/organising-core-data-for-ios.html (Me gustan mucho los consejos en este último). Una explicación simple si usa Xcode para generar una clase personalizada para su objeto administrado: si modifica algo en su entidad y luego genera la clase para acomodar esos cambios, Xcode sobrescribirá el código que ha escrito en la subclase original. –
¡Entendido! ¡¡Muchas gracias!! – Carlos
- 1. Cómo transportar la subclase NSManagedObject entre clases?
- 2. XCode4 no genera correctamente la subclase NSManagedObject
- 3. CoreData - cómo crear una subclase de una subclase de NSManagedObject (patrón Generation Gap)
- 4. 'NSInternalInconsistencyException', razón: "Foo" no es una subclase de NSManagedObject
- 5. Creando una subclase personalizada de ColorFilter?
- 6. Subclase NSManagedObject fuera del objeto administrado como un objeto normal
- 7. gdb: métodos de acceso de llamada en la subclase NSManagedObject?
- 8. @property automática no sintetizan trabajando en NSManagedObject subclase
- 9. Identificador único para NSManagedObject
- 10. Clasificación personalizada con NSFetchedResultController (subclase de NSSortDescriptor)
- 11. ¿Cómo se crea una subclase personalizada de IO en Ruby?
- 12. Animar una propiedad personalizada de la subclase CALayer
- 13. ¿Cómo exactamente subclase CALayer y utiliza una propiedad personalizada?
- 14. Cómo comprobar si existe un atributo en el tiempo de ejecución en una subclase NSManagedObject
- 15. Usando NSCoding en una subclase de clase personalizada
- 16. subclases NSManagedObject y setValuesForKeysWithDictionary:
- 17. NSManagedObject: isUpdated and isInserted
- 18. ¿Cómo hacer que NSTextField use la subclase personalizada de NSTextFieldCell?
- 19. ¿Cómo proporcionar una inicialización adicional para una subclase de namedtuple?
- 20. ¿Cómo realizo una validación personalizada (por singularidad) en Datos centrales?
- 21. iphone NSManagedObject - ¿La forma correcta de desasignar?
- 22. Usar la clase NSManagedObject sin initWithEntity :?
- 23. Usando una subclase UITableView con un UITableViewController
- 24. Métodos de configuración personalizada en Core-Data
- 25. NSManagedObject y KVO contra la documentación
- 26. Redibujar la subclase de CALayer personalizada en el cambio de propiedad personalizada
- 27. Crear subclase con diferentes propiedades subclase
- 28. Deshabilitar deshacer para la creación/eliminación de NSManagedObject
- 29. QueryStringBindable para una enumeración personalizada
- 30. Destacando una subclase uicontrol
Eche un vistazo a la siguiente pregunta http://stackoverflow.com/questions/10489578/custom-initializer-for-an-nsmanagedobject. Probablemente te ayude. –
@NenadMihajlovic +1. ¡Buen comentario! –