4

这是一个简短的序列,涉及一个带有(最初为空的)NSManagedObjectContextNSPersistentStoreCoordinator带有两个NSPersistentStores 的 Core Data 堆栈:

Player *player = [NSEntityDescription insertNewObjectForEntityForName: @"Player" 
                                               inManagedObjectContext: context];
player.playerID = playerID;
// (1) [context assignObject: player toPersistentStore: secondStore];

NSFetchRequest *requestForPlayer = [NSFetchRequest fetchRequestWithEntityName: @"Player"];
requestForPlayer.predicate = [NSPredicate predicateWithFormat: @"playerID == %@", playerID];
NSAssert(requestForPlayer.affectedStores == nil, nil); // inits to nil
// (2) requestForPlayer.affectedStores = @[ secondStore ];

players = [context executeFetchRequest: requestForPlayer error: &error];

这会吸引一名玩家。如果我取消注释(2)(即涉及第二家商店)它会获取零个(原文如此!)玩家。如果我也取消注释(1)它会再次获取一名玩家。

因此,似乎该行为仅在以下情况下才NSFetchRequest返回 unsaved NSManagedObjects

  1. 要么affectedStoresnil并且这些对象尚未分配给任何商店
  2. affectedStores不是nil,并且这些对象已分配给受影响的商店

确实是这样吗?如果是这样,Apple 在哪里记录了这一点?

4

0 回答 0