나는 올바른 방향으로 가고 있다고 생각하지만 여기에서 다시 확인하고 싶습니다. 최근 AFNetworking을 사용하여 데이터베이스에서 큰 XML 파일을 얻었습니다. 그런 다음 구문 분석해야합니다 (나는 그 부분을 모두 알아 냈습니다). 백그라운드 스레드에서 구문 분석을 수행하고 기본 스레드에서 UI를 업데이트하고 싶습니다.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];
(가)이 작업을 수행하는 선호/올바른/적절한 방법인가 : 그래서 AFXMLRequestOperation의 성공 블록 안에 다른 dispatch_async 블록을 추가?
네, 맞습니다. – rmaddy