Влияние затронутых магазинов на выбор несохраненных объектов NSManagedObjects?
Вот краткая последовательность, включающая стек основных данных с (изначально пустым) NSManagedObjectContext
и NSPersistentStoreCoordinator
с двумя NSPersistentStore
s:
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 это документирует?