我已经放弃了NSOperation并设置了我的completionBlock,但即使操作完成,它似乎永远不会进入.这是我的代码:
目录控制器类设置NSOperation:
- (void)setupOperation {
...
ImportWordOperation *importWordOperation = [[ImportWordOperation alloc] initWithCatalog:words];
[importWordOperation setMainObjectContext:[app managedObjectContext]];
[importWordOperation setCompletionBlock:^{
[(ViewController *)[[app window] rootViewController] fetchResults];
}];
[[NSOperationQueue mainQueue] addOperation:importWordOperation];
[importWordOperation release];
...
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在设置完成块以在主线程上执行某个方法,在其他控制器中执行.
然后,在main我的子类NSOperation类中:ImportWordOperation.m,我启动后台操作.我甚至覆盖了isFinishediVar,以便触发完成方法:
- (void)setFinished:(BOOL)_finished {
finished = _finished;
}
- (BOOL)isFinished {
return (self.isCancelled ? YES: finished);
}
- (void)addWords:(NSDictionary *)userInfo {
NSError *error = nil;
AppDelegate *app = [AppDelegate sharedInstance];
NSManagedObjectContext *localMOC = [userInfo valueForKey:@"localMOC"];
NSEntityDescription *ent = [NSEntityDescription entityForName:@"Word" inManagedObjectContext:localMOC];
for (NSDictionary …Run Code Online (Sandbox Code Playgroud)