Я думаю, что я на правильном пути, но просто хотел дважды проверить здесь. Недавно я начал использовать AFNetworking для получения большого XML-файла из базы данных, который затем мне нужно разобрать (я понял, что эта часть была выяснена). Я бы хотел, чтобы разбор произошел в фоновом потоке, а затем обновил свой интерфейс в основном потоке. Поэтому я добавил еще один dispatch_async блок внутри блока успеха в AFXMLRequestOperation:AFNetworking: разбор xml в фоновом режиме
self.xmlOperation =
[AFXMLRequestOperation XMLParserRequestOperationWithRequest: request
success: ^(NSURLRequest *request, NSHTTPURLResponse *response, NSXMLParser *XMLParser) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
XMLParser.delegate = self;
[XMLParser setShouldProcessNamespaces:YES];
[XMLParser parse];
dispatch_async(dispatch_get_main_queue(), ^{
[self.searchResultViewController didFinishImport];
[[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait];
});
});
}
failure: ^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, NSXMLParser *XMLParser) {
// show error
}];
[self.xmlOperation start];
ли правильный/правильно/предпочтительный способ сделать это?
Да, это правильно. – rmaddy