iPhone ASIHTTPRequest 从 requestFinished 方法中异步提取响应

Posted

技术标签:

【中文标题】iPhone ASIHTTPRequest 从 requestFinished 方法中异步提取响应【英文标题】:iPhone ASIHTTPRequest Asyncroneous Extracting Response from the requestFinished Method 【发布时间】:2011-03-24 12:55:01 【问题描述】:

我有一个响应,我从服务器返回一个需要设置的字符串,以便我可以在我的 viewdidload 方法中使用它....

我需要解析响应,然后在表格视图中显示......

下面是获取响应的方法。

- (void)requestFinished:(ASIHTTPRequest *)request

   // Use when fetching text data
   NSString *responseString = [request responseString];
 

我需要在我的 viewdidload 方法中使用存储在“responseString”中的数据,以便解析响应并将其加载到表视图中。

【问题讨论】:

为什么不将解析器移动到“viewDidLoad”方法之外的其他方法并使用 performSelector:onMainThread / dispatch_async 调用它? 【参考方案1】:

您的 viewDidLoad 中不需要它。如您所见,它回来得太晚了。

您需要的是在您返回数据后触发您的 UITableView 重新加载。

- (void)requestFinished:(ASIHTTPRequest *)request

   // Use when fetching text data
    NSString *responseString = [request responseString];

    // do something to turn responseString into the data you'll use to 
    // populate your table with data, and then:

    [myTable reloadData];
 

所以表格会空出来,一旦你有数据要显示就会重新加载。

【讨论】:

然后我需要在哪里执行我的请求才能使其按顺序加载到表中...?谢谢 万一......你不知道如何在数据加载数据时设置默认值表格单元格......因为当你第一次加载表格时表格是空的......跨度> 您想保留一个代表表数据的NSMutableArray,可能是命名为@property。然后在-numberOfRowsInSection 中,您想要返回该数组的计数。首次加载时,您将初始化该数组,它将有 0 行,numberOfRows 将返回 0,这将使表格成为空白。然后,当您重新加载数据时,numberOfRows 会说出数组中的行数,然后它会完成所有其余的建表业务。 是的,我以为是这样,但实际上在我的设计实现中实现它有点不同......我必须向你展示我的整个类文件让你理解...... 好吧,我告诉你它的规范方式。偏离这一点,后果自负,你知道吗?

以上是关于iPhone ASIHTTPRequest 从 requestFinished 方法中异步提取响应的主要内容,如果未能解决你的问题,请参考以下文章

使用 Asihttprequest 和 iPhone 的 Json 框架解析 JSON 数据

ASIHTTPRequest setPostValue iPhone

在 iPhone 后台下载

使用 ASIHTTPRequest 下载 plist 只能部分工作

ASIHttpRequest 可达性版本

覆盖 ASIHTTPRequest 的方法