Pracuję z nowymi funkcjami UID w systemie iOS 5.0. Mam istniejącą aplikację, która używa wielu różnych modeli danych (pliki momd). Zgodnie z dokumentacją dla UIManagedDocument można przesłonić - (NSManagedObjectModel *) managedObjectModel, aby załadować określony model danych (domyślnie ładowane są wszystkie znalezione modele danych połączone). Oba modele danych mają nakładające się nazwy modeli z różnymi schematami, więc nie jest to pożądane w moim przypadku.Zastąp obiekt managedObjectModel w UIManagedDocument
Tak, problem mam tutaj w prosty próbce, jest to, że mogę zastąpić funkcję, ale nie mogę przypisać to wynik. Jest on zarówno prywatny, więc klasa _managedObjectModel nie może być dostępna dla podklasy; i, jest on tylko do odczytu, więc self.managedObjectModel nie może zostać przypisany ..
Szukałem przykładu UIManagedDocument, który zastępuje managedObjectModel, ale Apple nie wydaje się go udostępniać.
Mogę być w stanie zdefiniować nową zmienną instancji _myManagedObjectModel i przypisać ją. Następnie zwróć to na akcesorium, nadpisuję. Obawiam się, że może dojść do przerwania wewnętrznej implementacji dokumentu UIManagedDocument, który nie używa akcesora managedObjectModel, a nie _managedObjectModel (który jest często widywany w implementacjach Jabłek).
Wydaje się, że jest to prosty problem i podejrzewam, że " Właśnie przegapiłem coś naprawdę prostego, aby umożliwić właściwe przesłonięcie.
//
// DTNoteDocument.m
// document-test
//
//
#import "DTNoteDocument.h"
@implementation DTNoteDocument
NSString * const kDataManagerModelName = @"Note";
-(NSManagedObjectModel*)managedObjectModel {
if (_managedObjectModel != nil)
return _managedObjectModel;
NSBundle *bundle = [NSBundle mainBundle];
NSString *modelPath = [bundle pathForResource:kDataManagerModelName ofType:@"momd"];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:[NSURL fileURLWithPath:modelPath]]; // compile error on this line, private variable cannot be assigned
return _managedObjectModel;
}
@end
Header:
#import <UIKit/UIKit.h>
@interface DTNoteDocument : UIManagedDocument
@end