Ios affectedStores对获取未保存的NSManagedObject的影响?

Ios affectedStores对获取未保存的NSManagedObject的影响?,ios,core-data,ios8,nsfetchrequest,nspersistentstore,Ios,Core Data,Ios8,Nsfetchrequest,Nspersistentstore,下面是一个简短的序列,它涉及一个核心数据堆栈,其中包含一个(最初为空)NSManagedObjectContext和一个NSPersistentStoreCoordinator以及两个NSPersistentStores: Player *player = [NSEntityDescription insertNewObjectForEntityForName: @"Player" inManaged

下面是一个简短的序列,它涉及一个核心数据堆栈,其中包含一个(最初为空)
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
)(即涉及第二个存储),它将获取零(原文如此!)玩家。如果我同时取消注释
(1)
,它将再次获取一名玩家

因此,似乎行为
NSFetchRequest
仅在以下情况下返回未保存的
NSManagedObject
s

  • affectedStores
    nil
    ,并且这些对象尚未分配给任何门店
  • 或者
    affectedStores
    不是
    nil
    ,并且这些对象已分配给受影响的门店

  • 果真如此吗?如果是,苹果公司在哪里记录了这一点?

    我也找不到记录。有趣的是,
    NSFetchRequest
    继承自
    NSPersistentStoreRequest
    ,但您将它扔到了MOC上。不管怎样:您已经看到了affectedStores inits到nil,而不是PSC的第一个/最后一个商店/什么?我不确定你是故意在#1中暗示,还是假设它。@stevesliva 1。我猜
    NSFetchRequest
    继承自
    NSPersistentStoreRequest
    的一个重要原因是它可以方便地用作
    NSIncrementalStore
    executeRequest:withContext:error:
    中的
    NSSaveChangesRequest
    的兄弟。2.是的,我看到了(除非有错误)。(对我来说)有点奇怪的是,在这个Q的上下文中,
    affectedStores==nil
    显然表示“第一个/最后一个/无论什么”,如果只有一个存储,但如果有多个存储,“没有这些”。