我实施了搜索,并且对于用户键入的每个新字符,performFetch:
内部都会performBlock:
启动。如果搜索字符串更改,我想取消之前启动的块并重新开始。我如何取消或至少通知performBlock:
内有关它的块?
我现在拥有的示例代码:
[myManagedObjectContext performBlock:^{
// fetch from background queue
if([[self fetchedResultsController] performFetch:nil]) {
// update the view from the main queue
// don't do this if performBlock already got started again! but how?
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
// refresh UI
}];
}
}];
答案 0 :(得分:3)
没有API可以取消performBlock
。一旦启动,它将一直持续到完成或直到您的代码return
为止。
如果您发现有必要在取消时取消抓取,请查看NSAsynchronousFetchRequest
,这样可以通过NSProgress
取消。 WWDC 2014 Core Data session