Основни данни и UIManagedDocument: Не могат да се обединяват модели с два различни обекта с имена

редактиране

Публикувах отново това тук: 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 и се надявам, че това е лесно решение, което съм твърде глупав/неопитен, за да го видя.

Не съм правил отделни версии на модела на данни или нещо подобно и не се опитвам да мигрирам нищо. Просто искам да пусна това приложение за първи път!

Благодаря за четенето.


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