我使用下面的代码来运行分析我的XML文件的功能...iOS:如何在使用Grand Central Dispatch(GCD)时同步我的managedObjectContext?
dispatch_queue_t queue = dispatch_queue_create("updateQueue", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(queue,^ { [self updateFromXMLFile:@"http://path/to/file.xml"]; });
dispatch_async(queue,^ { [self updateFromXMLFile:@"http://path/to/file1.xml"]; });
dispatch_async(queue,^ { [self updateFromXMLFile:@"http://path/to/file2.xml"]; });
dispatch_async(queue,^ { [self updateFromXMLFile:@"http://path/to/file3.xml"]; });
dispatch_barrier_async(queue,^ {
dispatch_async(dispatch_get_main_queue(),^ {
[self setBottomBarToUpdated];
});
});
这里下面是功能updateFromXMLFile
:
- (BOOL) updateFromXMLFile:(NSString *)pathToFile {
NSURL *url = [[NSURL alloc] initWithString:pathToFile];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
XMLParser *parser = [[XMLParser alloc] initXMLParser];
parser.managedObjectContext = self.managedObjectContext;
[xmlParser setDelegate: parser];
BOOL success = [xmlParser parse];
if(success)
return TRUE;
else
return FALSE;
}
我来跨越的问题是此错误消息:***Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSCFSet: 0xc675e10> was mutated while being enumerated.'
我猜测它与所有进程搞乱我的ManagedObjectContext在同一时间。我不知道如何处理,但。有任何想法吗?谢谢!
强烈建议检讨核心数据的WWDC 2012会议上,他们涵盖了所有该线程的东西 – CSmith 2012-08-14 15:46:37
你尝试注释四派遣一个呼叫来查看其中是否特别是创造了什么问题?我会从那里开始。另外,有没有一种方法可以序列化解析?你有没有想过NSOperationQueue? – Ravi 2012-08-14 15:58:31