【问题标题】:ASIHTTPRequest - Should I use multiple delegates to determine source of Async requests?ASIHTTPRequest - 我应该使用多个委托来确定异步请求的来源吗?
【发布时间】:2012-10-03 04:59:46
【问题描述】:

这更像是一个设计问题。我有一个管理 UITableView 的 ViewController。用户可以在这个 tableview 中添加/编辑/删除项目。对此表视图的更改通过 Web 服务调用保存在我的后端数据库中。我正在使用 ASIHTTPRequest 来包装这些 Web 服务调用。 ASIHTTPRequest 请求被赋予一个委托对象,该对象应该实现 -(void)requestFinished:request 和 -(void)requestFailed:request。

显然,我对 -(void)requestFinished:request 的实现会有所不同,具体取决于用户是删除记录还是刷新 tableview。这通常是如何处理的?我是否应该为不同类型的请求实现一个唯一的委托,在视图控制器中设置“状态”标志以指示哪个请求正在进行或其他?

谢谢!

【问题讨论】:

  • 嘿,伙计,给每个请求加上标签,然后在你的委托方法中检查 request.tag .. :)
  • 哦,太好了。我不知道“标签”属性。谢谢!

标签: iphone objective-c ios cocoa-touch asihttprequest


【解决方案1】:

您应该遵循 ASIHTTPRequest 的文档

在委托方法中处理多个请求的成功和失败

http://allseeing-i.com/ASIHTTPRequest/How-to-use

希望对你有所帮助。

【讨论】:

  • 是的。我的用例在那里有详细说明。谢谢!
  • 您可以使用 request.tag 区分每个请求
【解决方案2】:

您应该为您提出的每个请求提供tag

- (void)requestFinished:(ASIHTTPRequest *)request
{

    //Here you can differentiate each request using request.tag for individual request success

}

- (void)requestFailed:(ASIHTTPRequest *)request
{
    //Here you can differentiate each request using request.tag for individual request error
}

【讨论】:

    【解决方案3】:

    试试下面的代码...

    - (void)requestFinished:(ASIHTTPRequest *)request
    {
    
         if (request.tag == 1) { // 1 just an example
             /// do something here
         }
         else if (request.tag == 2) {
             /// do something here
         }
    }
    
     - (void)requestFailed:(ASIHTTPRequest *)request
    {
    
         if (request.tag == 1) { // 1 just an example
             /// do something here
         }
         else if (request.tag == 2) {
             /// do something here
         }
    }
    

    希望对你有帮助……

    :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-06
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多