2

我正在使用Core Data,並且在我的應用程序的開始就有很多麻煩的數據進入數據庫。
下面是我從一個教程中抓到的一些代碼。 下面列出了我獲得SIGABRT的要點。 任何建議或幫助表示讚賞 感謝NSManagedObjectModel mergedModelFromBundles錯誤

//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]; 
} 

回答

0

如果您檢查蘋果的文檔:

mergedModelFromBundles: 

返回通過合併在給定束中的所有模型創建的模型。

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

參數

***bundles*** 

一個NSBundle實例來搜索的數組。如果指定nil,則搜索主包。

***Return Value*** 

通過合併成捆找到的所有模型創建的模型。

你傳遞零你需要傳遞數組捆綁這是崩潰的原因。

+3

>如果指定nil,則搜索主包。 – 2013-07-23 05:48:40

相關問題