gpt4 book ai didi

ios - 在 iPhone 上解析 Google 自动完成 XML

转载 作者:可可西里 更新时间:2023-11-01 05:45:37 25 4
gpt4 key购买 nike

我试图让 Google 搜索自动完成功能在我的应用程序中运行,但我遇到了一些麻烦。我正在使用 UISearchBar 并且它是 textDidChange 委托(delegate)方法来执行此操作。当文本更改时,我使用 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
合格名称:(NSString *)合格名称
属性:(NSDictionary *)attributeDict

但我不太确定该怎么做。

最佳答案

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

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

- (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:委托(delegate)回调,确保做任何你需要做的来显示它——这取决于你的解析器委托(delegate)是什么对象。如果你的解析器的委托(delegate)是一个 TableView Controller ,你可以重新加载表。如果它是某个请求对象,您可以回调请求的委托(delegate)、执行完成 block 或发布通知。

关于ios - 在 iPhone 上解析 Google 自动完成 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15181960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com