我正在使用神奇的记录来处理核心数据。我有创建一个实体的代码,如下所示:
if ( gameEntity == nil )
{
gameEntity = [GameEntity MR_createEntity];
}
gameEntity.opponent = opponent;
gameEntity.me = me;
etc...
然后当我按如下方式查询游戏实体时:
NSPredicate* gamePredicate = [NSPredicate predicateWithFormat:@"SELF IN %@ AND gameState != %@", me.myGames, GAME_ENTITY_STATE__OTHER];
NSFetchRequest* fetchRequest = [GameEntity MR_requestAllWithPredicate:gamePredicate];
NSArray * results = [[NSManagedObjectContext MR_defaultContext] executeFetchRequest:fetchRequest error:nil];
return results;
结果的大小为 1(这是有道理的)。
但是,当我按如下方式保存上下文时:
[[NSManagedObjectContext MR_defaultContext] MR_save];
然后运行上面相同的 fetchRequest,突然 GameEntity 消失了,NSArray 中也没有结果。
更奇怪的是,当我关闭应用程序并再次运行它时,它找到了 GameEntity。所以它实际上被保存了。为什么 MR_save 本质上会破坏我的 NSManagedObject 上下文?
所有保存和创建都在主线程上运行。