Основные данные и UIManagedDocument: невозможно объединить модели с двумя разными объектами с именами

изменить

Я разместил это здесь: Core Data & UIManagedDocument в Xcode 4.3: Невозможно объединить модели

Мне удалось показать другую ошибку.

конец редактирования

поэтому я делаю приложение Core Data, которое использует общий 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 (стандартный материал Core Data, верно?). Проблема в том, что я получаю эту ошибку при запуске приложения:

«Невозможно объединить модели с двумя разными именами объектов»

Я слишком много работаю с этим DocumentHandler, и я надеюсь, что это простое решение, которое я слишком глуп/неопытен, чтобы увидеть.

Я не делал отдельных версий модели данных или чего-то еще, и я не пытаюсь ничего мигрировать. Я просто хочу запустить это приложение в первый раз!

Спасибо за чтение.


person Caborca87    schedule 10.05.2012    source источник
comment
Хорошо, я изменил имя .coredatamodel и изменил его обратно, и это решило эту проблему (странно...). Но теперь я получаю это: 'NSInvalidArgumentException', причина: '-[__NSArrayM insertObject:atIndex:]: объект не может быть нулевым в '[UIManagedDocument alloc]' в моем пользовательском методе инициализации   -  person Caborca87    schedule 10.05.2012
comment
да, URL-адрес не равен нулю. На самом деле я разместил вопрос гораздо более эффективным способом здесь: stackoverflow.com/questions/10545613/ Спасибо за чтение!   -  person Caborca87    schedule 11.05.2012