【问题标题】:Parse Google autocomplete XML on iPhone在 iPhone 上解析 Google 自动完成 XML
【发布时间】:2013-03-03 02:58:34
【问题描述】:

我正在尝试让 Google 搜索自动完成功能在我的应用中运行,但遇到了一些麻烦。我正在使用UISearchBar,它是textDidChange 委托方法。当文本发生变化时,我使用NSXmlParser 来读取这样一个 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 文本。这将返回一个 XML 文件,然后我将使用

对其进行解析以找到建议的术语

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

但我不太确定该怎么做。

【问题讨论】:

    标签: ios xml autocomplete nsxmlparser


    【解决方案1】:

    一般的想法是拥有一个searchSuggestions 可变数组属性。在parserDidStartDocument: 方法中,确保将其初始化为一个新的空数组——类似于self.searchSuggestions = [NSMutableArray array];

    然后,在您的 didStartElement 委托方法中,执行此操作以获取每个建议的项目。

    - (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];
        }
    }
    

    一旦您获得parserDidEndDocument: 委托回调,请确保执行您需要做的任何事情来显示它 - 这取决于您的解析器委托是什么对象。如果你的解析器的委托是一个表格视图控制器,你可以重新加载表格。如果是某个请求对象,您可以回调请求的委托、执行完成块或发布通知。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 2011-10-05
      • 2011-06-29
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多