CoreData: error: Failed to call designierten Initialisierer auf NSManagedObject Klasse 'Sammeln'
Damit wickeln Sie einige Logik-Modell, ich plan, um NSManagedObjectContext in ein NSManagedObject-Modell, so kann ich behandeln viele gemeinsame Logik in einem Modell:
@interface Collect : NSManagedObject{
NSManagedObjectContext *managedObjectContext;
}
@property (nonatomic, retain) NSNumber *created_at;
@property (nonatomic, retain) NSString *name;
- (void) initContext;
@end
@implementation Collect
@dynamic created_at;
@dynamic name;
- (void) initContext{
if (managedObjectContext == nil)
{
managedObjectContext = [MyAppDelegate managedObjectContext];
}
}
@end
Ist und ich es durch:
Collect *collect = [[Collect new] autorelease];
[collect initContext];
Aber beim ausführen zeigt es:CoreData: error: Failed to call designated initializer on NSManagedObject class 'Collect'
.
Möchte ich wissen, Wie das hinzufügen NSManagedObjectContext Instanz zu NSManagedObject Modell richtig ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht fügen Sie eine verwaltete Objekt-Kontext auf ein verwaltetes Objekt, es funktioniert anders herum: Sie benötigen eine managed-object-context-zuerst, und dann können Sie Objekte erstellen in diesem Zusammenhang.
Siehe z.B. die
NSManagedObjectContext
Dokumentation:und die
NSManagedObject
Dokumentation:Außerdem gibt es eine utility-Methode
insertNewObjectForEntityForName:inManagedObjectContext:
um neue Objekte zu erstellen. Zum Beispiel:(Sie setzen könnte, dass in einer Methode der Klasse des
Collect
wenn Sie möchten.)Und beachten Sie, dass
NSManagedObject
bereits einemanagedObjectContext
Methode, um den Kontext des Objekts:Es ist daher nicht notwendig (und vielleicht sogar zu Problemen führen) wenn Sie fügen Sie eine Instanz-variable
managedObjectContext
zu Ihrem managed-object-Klasse.