iOS - 此NSPersistentStoreCoordinator没有持久存储(损坏的文件)。

时间:2017-03-29 16:20:20

标签: ios objective-c core-data

我在我的iOS应用程序中使用CoreData以允许用户将一些数据保存到他的手机中,每当我进行更新时,我只会得到一个或两个有以下崩溃消息的用户:

Fatal Exception: NSInternalInconsistencyException

此NSPersistentStoreCoordinator没有持久存储(损坏的文件)。它无法执行保存操作。

虽然多次表示他们根本无法打开应用程序,但每次重新启动时都会崩溃。这只发生在1,最多2个用户中的几千个,而且我不可能复制它。

    - (NSManagedObjectContext *)managedObjectContext
{
    if (_managedObjectContext != nil) {
        return _managedObjectContext;
    }

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
    if (coordinator != nil) {
        _managedObjectContext = [[NSManagedObjectContext alloc] init];
        [_managedObjectContext setPersistentStoreCoordinator:coordinator];
    }
    return _managedObjectContext;
}
- (NSManagedObjectModel *)managedObjectModel
{
    if (_managedObjectModel != nil) {
        return _managedObjectModel;
    }
    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"modelName" withExtension:@"momd"];
    _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
    return _managedObjectModel;
}
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (_persistentStoreCoordinator != nil) {
        return _persistentStoreCoordinator;
    }

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"app name.sqlite"];
    NSError *error = nil;
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
    NSDictionary *options = @{
                              NSMigratePersistentStoresAutomaticallyOption : @YES,
                              NSInferMappingModelAutomaticallyOption : @YES,
                              NSSQLiteManualVacuumOption : @YES
                              };
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    }

    return _persistentStoreCoordinator;
}

这是我的AppDelegate中的CoreData堆栈。

我做错了什么?

0 个答案:

没有答案