受影响的商店对获取未保存的NSManagedObjects的影响?

时间:2015-03-09 11:24:12

标签: ios core-data ios8 nsfetchrequest nspersistentstore

这是一个简短的序列,涉及一个核心数据堆栈,其中包含一个(最初为空)NSManagedObjectContext和一个NSPersistentStoreCoordinator,其中包含两个NSPersistentStore

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)(即涉及第二个商店),它将获取零(sic!)玩家。如果我取消注释(1),它还会再次获取一个玩家。

因此,似乎行为NSFetchRequest仅在

时才会返回未保存的NSManagedObject
  1. affectedStoresnil且这些对象尚未分配给任何商店
  2. affectedStores不是nil且这些对象已分配给受影响的商店
  3. 确实如此,如果是这样,Apple会记录在哪里?

0 个答案:

没有答案