2013-10-08 4 views
0

как отменить текущий процесс NSManagedObjectContext выполнитьBlockAndWait? есть все равно, чтобы это сделать. Я хочу отменить в случае удаления пользователя и не хочу сохранять 1000 записей.NSManagedObjectContext отменить операцию во время выполненияBlockAndWait

[context performBlockAndWait:^{ 
     NSError *childError = nil; 
     if ([context save:&childError]) 
     { 
      [context.parentContext performBlockAndWait:^{ 
       NSError *parentError = nil; 
       if ([context.parentContext save:&parentError]) 
       { 
        // something here 
       } 
       else 
       { 
        // error 
       } 
      }]; 
     } 
     else 
     { 
      // error 
     } 
    }]; 
+0

У вас есть какой-то цикл в 'performBlockAndWait'? –

ответ

2

Вы не отменяете performBlockAndWait, для этого нет поддержки API.

Звонок выполняется до тех пор, пока блок, который вы предоставляете, не завершится. Если по какой-то причине вам нужно выйти рано, вам нужно будет проверить флаг внутри блока и перестать работать, если флаг сказал, что пришло время для выхода. Вы не можете заставить его остановиться снаружи; вам нужно закончить и выйти изнутри. Если это не работает с вашими текущими звонками до performBlockAndWait, вы можете либо реорганизовать этот код так, чтобы это было возможно, либо жить в текущей ситуации.

Смежные вопросы