重复搜索结果和XMLParser数组刷新问题

时间:2011-02-02 18:59:35

标签: iphone objective-c nsxmlparser uisearchbar

我使用NSXMLParser来解析ext。 API数据。我还使用Singleton共享数组var来维护从ext API检索的信息。

此信息是动态的,用户在UISearchBar

中输入任何内容即会更改

现在,只要用户输入任何内容,我就会使用[retrieveArray removeAllObjects]清除现有的数组内容;

因此,这会根据搜索栏中的当前条款刷新retrieveArray。

如果用户输入缓慢,这可以正常工作。但是,如果用户输入速度非常快,我会看到重复的搜索结果。我假设这是因为retrieveArray内容没有足够的时间来清除。

我仍在尝试解决此问题。请提出一些补救措施。

请你帮我解决。

2 个答案:

答案 0 :(得分:0)

不,我不认为是这种情况,除非你在一个单独的线程中搜索并在另一个线程中清除数组。如果没有,那么搜索逻辑中可能存在错误。

答案 1 :(得分:0)

首先,我认为单身方法可能不是最好的方法。但请确保您正在同步对阵列的所有可变访问。不要让单身人士为任何对象及其母亲(NSMutableArray)返回super,而是需要使用addObjectremoveObject,{{1}等方法使用clear块或您决定的任何锁定。我仍然看到这种方法的问题,因为调用addObject,remove和clear的代码也都需要同步。也许考虑每个自动完成请求您使用委托或发布包含时间戳的@synchronize,用户输入的字符以获取数据,以及NSNotification结果。那时您可以看到响应是否仍然有效,丢弃任何无效响应,并仅使用最新有效NSArray的内容更新用户