Core Data NSInternalInconsistencyException(这次不同)

Posted

技术标签:

【中文标题】Core Data NSInternalInconsistencyException(这次不同)【英文标题】:Core Data NSInternalInconsistencyException (different this time) 【发布时间】:2012-07-09 17:35:50 【问题描述】:

我知道 SO 中有上百万个这样的问题,但这是不同的,我很难过。

我有一个包含十几个实体的数据模型。代码运行得很好。然后我对模型进行了版本化,添加了实体和关系,然后更新了 xdatamodeld 文件中当前版本化数据模型的设置,现在在尝试访问新实体时出现 NSInternalInconsistencyException。

在我的主 VC 中,我记录了上下文、持久存储协调器、托管对象模型和所有实体。一切看起来都符合我的预期,包括我尝试访问的实体。

我已经将 SQLite DB 吹走,让 Core Data 重新创建它,并且可以看到具有正确列类型的表。

一切看起来都正确。

这里是获取代码:

- (void)fetchMissions 
    NSFetchRequest *request = [[NSFetchRequest alloc] init];
    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Mission" inManagedObjectContext:self.managedObjectContext];
    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
    NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];

    [request setEntity:entity];
    [request setSortDescriptors:sortDescriptors];

    NSError *error = nil;
    missionsArray = [[self.managedObjectContext executeFetchRequest:request error:&error] mutableCopy];

下面是输出:

NSLog(@"Entities : %@",[[self.managedObjectContext.persistentStoreCoordinator.managedObjectModel entities] valueForKey:@"name"]);


Entities : (
    Character,
    CharacterClass,
    CharacterCondition,
    CharacterObjective,
    CharacterPerception,
    Condition,
    Mission,
    Objective,
    Perception,
    PlayerCharacter,
    Scoreboard
)

当我打印出整个托管对象模型时,我还看到了 Mission 实体的详细信息:

NSLog(@"MOM : %@", self.managedObjectContext.persistentStoreCoordinator.managedObjectModel);

实体非常简单... 3 列,两列是文本/字符串,一列是整数。模型编辑器中的实体描述与 SQLite 中的表定义匹配。

我错过了什么??

【问题讨论】:

【参考方案1】:

好吧,我是个白痴……

没有像在其他 VC 中那样在 viewDidLoad 中获取 MOC,因此当我从代理打印出正确的 MOC 时,我在 Mission VC 中没有处理它。

固定。

感谢您的收听。 :)

【讨论】:

以上是关于Core Data NSInternalInconsistencyException(这次不同)的主要内容,如果未能解决你的问题,请参考以下文章

RestKit / Core Data:远程删除的实体不会从 Core Data 中删除

Plain Core Data vs Core Data + Magical Record

RESTkit,Core Data:在将对象传输到 Core Data 之前对其进行处理

.net core 基于Dapper 的分库分表开源框架(core-data)

EF6 System.Data.Entity.Core.EntityKey 在 Entity Framework Core 中的等价物是啥?

.net core 基于Dapper 的分库分表开源框架(core-data)