Влияние затронутых магазинов на выбор несохраненных объектов NSManagedObjects?

Вот краткая последовательность, включающая стек основных данных с (изначально пустым) NSManagedObjectContext и NSPersistentStoreCoordinator с двумя NSPersistentStores:

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. или affectedStores является nil и эти объекты не были назначены ни одному магазину
  2. или же affectedStores не является nil и эти объекты были назначены в пострадавший магазин

Действительно ли это так, и если да, то где Apple это документирует?

0 ответов

Другие вопросы по тегам