Comment puis-je coder une sous-classe init
personnalisée pour NSManagedObject
? Je voudrais quelque chose comme initItemWithName:Volume:
par exemple. Où Item
est une sous-classe NSManagedObject
avec deux attributs, name
et volume
.Init. Personnalisée pour une sous-classe NSManagedObject
Répondre
Carlos,
Comme Nenad Mihajlovic a suggéré que vous pourriez créer une catégorie pour cela. Par exemple, si vous avez une classe Item
, vous pouvez créer une catégorie appelée Item+Management
et y placer le code de création. Ici vous pouvez trouver un exemple 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;
}
Lorsque vous souhaitez créer un nouvel article, faire une importation comme
#import "Item+Management.h"
et utiliser comme celui-ci
Item* item = [Item itemWithName:@"test" volume:[NSNumber numberWithInt:10] inManagedObjectContext:yourContext];
// do what you want with item...
Cette approche est très flexible et très facile à entretenir pendant la application en cours de développement.
Vous pouvez trouver plus d'informations au Stanford Course Lecture 14 exemple de code. En outre, voir aussi des vidéos gratuites sur iTunes par Stanford (si vous avez un identifiant Apple).
Espérons que ça aide.
P.S. Par souci de simplicité, je suppose que name
est un NSString
et volume
est un NSNumber
. Pour volume
, il pourrait être préférable d'utiliser le type NSDecimalNumber
.
Merci beaucoup Flex_Addicted !! Mais, une question: pourquoi avons-nous créer ces méthodes sur une catégorie et non dans la sous-classe 'NSManagedObject'? J'ai plusieurs classes et j'aurais besoin d'au moins 7 catégories. – Carlos
Vous pouvez trouver des informations à http://stackoverflow.com/questions/9297101/nsmanagedobjects-with-categories et à http://blog.chrismiles.info/2011/06/organising-core-data-for-ios.html (J'aime beaucoup les conseils dans le dernier). Une explication simple si vous utilisez Xcode pour générer une classe personnalisée pour votre objet géré: si vous modifiez quelque chose dans votre entité, puis générez la classe pour accueillir ces modifications, Xcode remplacera le code que vous avez écrit dans la sous-classe d'origine. –
J'ai compris! Merci beaucoup!! – Carlos
- 1. NSManagedObject init/dealloc equivalent
- 2. Valeur d'affichage NSManagedObject personnalisée
- 3. Reliure personnalisée, avec reliure & init - knockout.js
- 4. Type NSPasteboard pour NSManagedObject
- 5. NSPredicate pour la propriété NSNumber de NSManagedObject
- 6. Convertir NSObject en NSManagedObject
- 7. Setter pour NSManagedObject crée _CDSnapshot_Provence_
- 8. NSManagedObject pour une utilisation temporaire, comment basculer entre NSObject et NSManagedObject
- 9. init personnalisé pour
- 10. Présentation de NSManagedObject
- 11. Configurer et envoyer la méthode déléguée personnalisée dans init?
- 12. NSManagedObject - NSSet est supprimé?
- 13. Données de base IOS avec KVO - valueForKey: pour la propriété personnalisée d'une sous-classe NSManagedObject?
- 14. Sous-classe NSManagedObject provoque NSInvalidArgumentException
- 15. Comment fournir une méthode init pour un constructeur d'arguments vide?
- 16. NSManagedObject devient nulle
- 17. Extraction d'attributs du tableau NSManagedObject
- 18. méthode partagée pour mettre à jour Core Data NSManagedObject?
- 19. Que faire pour appeler une classe qui hérite de NSManagedObject?
- 20. différentes cardinalités pour la relation dans la sous-classe NSManagedObject
- 21. Conserver sur les plantages NSManagedObject
- 22. Java init init block avec
- 23. pour une action personnalisée
- 24. iOS NSDate et NSManagedObject
- 25. Comment définir une vue personnalisée pour UIBarButtonItem?
- 26. Swift: Setter personnalisé pour CoreData NSManagedObject
- 27. également trouvé '- (void) INIT
- 28. Comment ajouter une invite personnalisée à l'intérieur du modèle personnalisé grunt-init
- 29. NSPredicate pour la longueur d'un attribut de chaîne de NSManagedObject
- 30. iOS: erreur de données de base: NSMergeConflict pour NSManagedObject
Jetez un oeil à la question suivante http://stackoverflow.com/questions/10489578/custom-initializer-for-an-nsmanagedobject. Je vais vous aider probablement. –
@NenadMihajlovic +1. Bon commentaire! –