这是一个简短的序列,涉及一个带有(最初为空的)NSManagedObjectContext
和NSPersistentStoreCoordinator
带有两个NSPersistentStore
s 的 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 NSManagedObject
s
- 要么
affectedStores
是nil
并且这些对象尚未分配给任何商店 - 或
affectedStores
不是nil
,并且这些对象已分配给受影响的商店
确实是这样吗?如果是这样,Apple 在哪里记录了这一点?