Ошибка NSManagedObjectModel mergedModelFromBundles - PullRequest
2 голосов
/ 12 февраля 2012

Я работаю с Core Data и у меня много проблем с получением данных в базу данных сразу после запуска моего приложения.
Ниже приведен код, который я взял из учебника, которому я следовал. Точка, где я получаю SIGABRT, обрисована в общих чертах ниже. Любые предложения или помощь приветствуется Спасибо

//THIS FUNCTION IS CALLED AFTER MY APP DID FINISHING LOADING IN THE 
//    IN THE APP DELEGATE
-(void)loadData
{
    NSManagedObjectContext *context = [self managedObjectContext];

    NewModel *newModel = (NewModel *)[NSEntityDescription insertNewObjectForEntityForName:@"NewModel" inManagedObjectContext:context];

    //ADD MORE DATA TO ENTITY
}

/**
 Returns the managed object context for the application.
 If the context doesn't already exist, it is created and bound to the persistent store coordinator for the application.
 */
- (NSManagedObjectContext *) managedObjectContext {

    if (managedObjectContext != nil) {
        return managedObjectContext;
    }

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if (coordinator != nil) {
        managedObjectContext = [[NSManagedObjectContext alloc] init];
        [managedObjectContext setPersistentStoreCoordinator: coordinator];
    }
    else
    {
        NSLog(@"Error");
    }        
    return managedObjectContext;
}


/**
 Returns the managed object model for the application.
 If the model doesn't already exist, it is created by merging all of the models found in the application bundle.
 */
- (NSManagedObjectModel *)managedObjectModel {

    if (managedObjectModel != nil) {
        return managedObjectModel;
    }
/**********************************************************/    
    //  SIGABRT HAPPENS IN THE NEXT LINE OF CODE
/**********************************************************/    
    managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];    
    return managedObjectModel;
}

/**
 Returns the persistent store coordinator for the application.
 If the coordinator doesn't already exist, it is created and the application's store added to it.
 */
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (persistentStoreCoordinator != nil) {
        return persistentStoreCoordinator;
    }

    NSString *storePath = [ [self applicationDocumentsDirectory] stringByAppendingPathComponent:@"NewModel.db"];
    NSURL *storeUrl = [NSURL fileURLWithPath:storePath];

    // Put down default db if it doesn't already exist
    NSFileManager *fileManager = [NSFileManager defaultManager];
    if (![fileManager fileExistsAtPath:storePath]) {
        NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"LeagueModel" ofType:@"sqlite"];
        if (defaultStorePath) {
            [fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
        }
    }

    NSError *error = nil;
    persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
    if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:nil error:&error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }    

    return persistentStoreCoordinator;    
}

/**
 Returns the path to the application's Documents directory.
 */
- (NSString *)applicationDocumentsDirectory {
    return [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
}

1 Ответ

0 голосов
/ 12 февраля 2012

если вы проверяете документацию яблока:

mergedModelFromBundles:

Возвращает модель, созданную путем объединения всех моделей, найденных в заданных комплектах.

+ (NSManagedObjectModel *)mergedModelFromBundles:(NSArray *)bundles

Параметры

***bundles***

Массив экземпляров NSBundle для поиска. Если вы укажете nil, тогда будет произведен поиск основного пакета.

***Return Value***

Модель, созданная путем объединения всех моделей, найденных в связках.

вы передаете ноль, где вам нужно передать массив для связок, это является причиной сбоя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...