Ich habe eine endgültige Antwort gefunden bei Mehr iPhone 3 Entwicklung von Dave Mark und Jeff LeMarche.
Wenn es Sie wirklich stört, dass Sie eine Methode auf NSEntityDescrpiton
und nicht auf NSManagedObjectContext
um ein neues Objekt in eine NSManagedObjectContext
können Sie eine Kategorie verwenden um eine Instanzmethode hinzuzufügen zu NSManagedObjectContext
.
Erstellen Sie zwei neue Textdateien mit den Namen NSManagedObject-Insert.h y NSManagedObject-Insert.m .
En NSManagedObject-Insert.h den folgenden Code ein:
import <Cocoa/Cocoa.h>
@interface NSManagedObjectContext (insert)
- (NSManagedObject *)insertNewEntityWithName:(NSString *)name;
@end
En NSManagedObject-Insert.m diesen Code ein:
#import "NSManagedObjectContext-insert.h"
@implementation NSManagedObjectContext (insert)
- (NSManagedObject *)insertNewEntityWithName:(NSString *)name
{
return [NSEntityDescription insertNewObjectForEntityForName:name inManagedObjectContext:self];
}
@end
Sie können importieren NSManagedObject-Insert.h überall dort, wo Sie diese neue Methode anwenden möchten. Ersetzen Sie dann die Insert-Aufrufe durch NSEntityDescription
wie diese hier:
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
mit der kürzeren und intuitiveren Variante:
[context insertNewEntityWithName:[entity name]];
Sind die Kategorien nicht großartig?