редактиране
Публикувах отново това тук: Core Data & UIManagedDocument в Xcode 4.3: Не могат да се обединяват модели
Успях да получа различна грешка за показване.
край на редакцията
така че правя приложение за основни данни, което използва споделен UIManagedDocument
. Имам достъп до това UIManagedDocument
с помощта на помощен клас DocumentHandler
. Надявам се, че ще мога да го използвам по този начин в viewWillAppear
на друг клас:
if (!self.document) {
[[DocumentHandler sharedDocumentHandler] performWithDocument:^(UIManagedDocument *document) {
self.document = document;
[self setupFetchedResultsController];
}];
}
`
- (id)init {
self = [super init];
if (self) {
NSURL *url = [[[NSFileManager defaultManager] URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask] lastObject];
url = [url URLByAppendingPathComponent:@"MyJimDocument"];
self.document = [[UIManagedDocument alloc] initWithFileURL:url];
// Set our document up for automatic migrations
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
[NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];
self.document.persistentStoreOptions = options;
// Register for notifications
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(objectsDidChange:)
name:NSManagedObjectContextObjectsDidChangeNotification
object:self.document.managedObjectContext];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(contextDidSave:)
name:NSManagedObjectContextDidSaveNotification
object:self.document.managedObjectContext];
}
return self;
}
- (void)performWithDocument:(OnDocumentReady)onDocumentReady {
void (^OnDocumentDidLoad)(BOOL) = ^(BOOL success) {
onDocumentReady(self.document);
};
if (![[NSFileManager defaultManager] fileExistsAtPath:[self.document.fileURL path]]) {
[self.document saveToURL:self.document.fileURL
forSaveOperation:UIDocumentSaveForCreating
completionHandler:OnDocumentDidLoad];
} else if (self.document.documentState == UIDocumentStateClosed) {
[self.document openWithCompletionHandler:OnDocumentDidLoad];
} else if (self.document.documentState == UIDocumentStateNormal) {
OnDocumentDidLoad(YES);
}
}
'
Използвайки контекста от документа, създавам NSManagedObjects (стандартни основни данни, нали?). Проблемът е, че получавам тази грешка, когато стартирам приложението:
„Не могат да се обединят модели с два различни обекта с имена“
Затруднявам се с този DocumentHandler и се надявам, че това е лесно решение, което съм твърде глупав/неопитен, за да го видя.
Не съм правил отделни версии на модела на данни или нещо подобно и не се опитвам да мигрирам нищо. Просто искам да пусна това приложение за първи път!
Благодаря за четенето.