首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSInternalInconsistencyException:无法让NSPersistentStore启动或创建存储区

NSInternalInconsistencyException:无法让NSPersistentStore启动或创建存储区
EN

Stack Overflow用户
提问于 2013-01-12 06:16:13
回答 1查看 127关注 0票数 0

我已经工作了一整天来解决我发现的一个NSInternalInconsistencyException错误。我得到的错误控制台消息是“此NSPersistentStoreCoordinator没有持久存储。它无法执行保存操作。”我还得到“执行被中断,原因: EXC_BAD_ACCESS (code=1,address=0x1)”。

我的App Delegate中有以下代码:

代码语言:javascript
复制
- (void)saveContext
{
    NSError *error = nil;
    NSManagedObjectContext *managedObjectContext = self.managedObjectContext;
    if (managedObjectContext != nil) {
        if ([managedObjectContext hasChanges] && ![managedObjectContext save:&error]) {

            NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
            abort();
        }
    }
}

#pragma mark Core Data stack

- (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;
    }
    _managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];
    return _managedObjectModel;
}

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator
{
    if (_persistentStoreCoordinator != nil) {
        return _persistentStoreCoordinator;
    }

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"shindy.sqlite"];

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


#pragma mark Application's documents directory

- (NSURL *)applicationDocumentsDirectory
{
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}

我已经通读了其他类似的问题,看起来我的代码是一致的,我不应该有这个问题。然而我是..。

我已经尝试了清理和删除应用程序和重新安装。我在两个设备上都尝试了这个应用程序&在模拟器上。我将附加的URLPath的名称"shindy.sqlite“更改为以前从未使用过的其他名称。我还尝试在我的applicationDidFinishLaunching方法中强制实例化[self saveContext];,试图让我的应用程序创建商店。

我所有解决这个问题的尝试都返回了相同的错误。我不知道还能试什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-12 14:21:58

我最终找出了我做错了什么。不幸的是,这可能对你们中的大多数人没有太大帮助,因为这是我犯的一个愚蠢的错误。

我只是在App Delegate中正常地“追加”到URL上。然后在加载的第一个视图控制器中再次“追加”。这导致我的代码在已经创建的sqlite文件夹上附加了一个名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14287579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档