这是一个简短的序列,涉及一个核心数据堆栈,其中包含一个(最初为空)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
affectedStores
为nil
且这些对象尚未分配给任何商店affectedStores
不是nil
且这些对象已分配给受影响的商店确实如此,如果是这样,Apple会记录在哪里?