2013-03-03 2 views
4

내 앱에서 Google 검색 자동 완성 기능을 사용하려고하지만 일부 문제가 있습니다. 나는 UISearchBar을 사용하고 있습니다. 이렇게하려면 textDidChange 대리자 메소드가 필요합니다. 텍스트 변경, 나는이 같은 XML 파일을 읽어 NSXmlParser를 사용하는 경우 :iPhone에서 Google 자동 완성 XML을 구문 분석합니다.

<toplevel> 
<CompleteSuggestion> 
<suggestion data="searchterms"/> 
<num_queries int="13400000"/> 
</CompleteSuggestion> 
<CompleteSuggestion> 
<suggestion data="searchterms twitter"/> 
<num_queries int="52500000"/> 
</CompleteSuggestion> 
</toplevel> 

http://suggestqueries.google.com/complete/search?client=toolbar&q=SEARCHTERM

SEARCHTERM는 UISearchBar 텍스트 것 곳. 이것은 내가 다음

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict

를 사용하여 제안 된 용어를 찾기 위해 구문 분석되는 XML 파일을 반환하지만 방법이 아주 확실하지 않다.

답변

3

일반적인 생각은 searchSuggestions 가변 배열 속성을 갖는 것입니다. parserDidStartDocument: 메서드에서 새 배열을 초기화해야합니다 (예 : self.searchSuggestions = [NSMutableArray array];).

그런 다음 didStartElement 대리자 메서드에서 각 제안 된 항목을 가져 오려면이 작업을 수행하십시오. 당신이 당신의 parserDidEndDocument: 대리인 콜백을 일단

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict { 
    if ([elementName isEqualToString:@"suggestion"]) { 
     NSString *suggestion = attributeDict[@"data"]; 
     [self.searchSuggestions addObject:suggestion]; 
    } 
} 

, 당신이 그것을 표시 할 필요가 무엇이든 할 수 있는지 확인하십시오 - 당신의 파서 위임 어떤 개체에 따라 달라집니다. 파서의 델리게이트가 테이블 뷰 컨트롤러 인 경우 테이블을 다시로드하면됩니다. 일부 요청 개체 인 경우 요청의 위임을 다시 호출하거나 완료 블록을 실행하거나 알림을 게시 할 수 있습니다.

+0

정말 고맙습니다. – JohnWickham

관련 문제