Sto lavorando con le nuove funzionalità di UIDocument in iOS 5.0. Ho un'applicazione esistente che utilizza più modelli di dati diversi (file momd). Secondo la documentazione di UIManagedDocument, è possibile sovrascrivere - (NSManagedObjectModel *) managedObjectModel per caricare un modello dati specifico (l'impostazione predefinita è caricare tutti i modelli di dati trovati uniti). Entrambi i modelli di dati hanno nomi di modelli sovrapposti con schemi diversi, quindi nel mio caso questo non è auspicabile.Override managedObjectModel in UIManagedDocument
Quindi, il problema che ho qui in un campione semplice, è che posso ignorare la funzione, ma non posso assegnarlo è risultato. È sia privato, quindi _managedObjectModel non è accessibile dalla sottoclasse; e, è di sola lettura, quindi self.managedObjectModel non può essere assegnato ..
Ho cercato un esempio UIManagedDocument che sovrascriva managedObjectModel, ma Apple non sembra fornirne uno.
Posso essere in grado di definire una nuova variabile di istanza _myManagedObjectModel e assegnarlo. Quindi restituiscilo sull'accessorio che sto ignorando. La mia preoccupazione è che si possa rompere qualche implementazione interna di UIManagedDocument che non usa l'accessorio managedObjectModel in preferenza per _managedObjectModel (che è spesso visto nelle implementazioni di Apple ...)
Sembra un problema semplice e sospetto che io sia Mi manca solo qualcosa di veramente semplice per consentire un corretto override.
//
// 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
Intestazione:
#import <UIKit/UIKit.h>
@interface DTNoteDocument : UIManagedDocument
@end