我有一个方法(getAllTeams :)使用ASIHTTPRequest库发起HTTP请求。ASIHTTPRequest通过结果“requestFinished”返回原始方法
NSURL *httpURL = [[[NSURL alloc] initWithString:@"/api/teams" relativeToURL:webServiceURL] autorelease];
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:httpURL] autorelease];
[request setDelegate:self];
[request startAsynchronous];
我想什么,能够做的就是调用[WebService getAllTeams]
和有它在一个NSArray返回结果。目前,getAllTeams不会返回任何内容,因为在requestFinished:方法中评估HTTP响应。
理想情况下,我希望能够调用[WebService getAllTeams]
,等待响应,并将其转储到NSArray中。我不想创建属性,因为这是一次性类(意味着它不存储任何值,只是检索值),并且多个方法将使用相同的requestFinished(全部返回一个数组)。
我已经读了一些委托和NSNotifications,但我不确定他们是否是最好的方法。我发现this snippet通过传递一个选择器作为参数来实现回调,但它没有平移(因为requestFinished独立触发)。
有什么建议吗?我希望即使只是指出正确的方向。
NSArray *teams = [[WebService alloc] getAllTeams];
(目前不起作用,因为getAllTeams不返回任何东西,但requestFinished一样。我想requestFinished的结果,并将其传递回getAllTeams :)
我是否可以使用此方法访问responseString/responseData,还是我需要处理自己的东西? – Intelekshual 2010-05-21 13:49:32
您的代理方法(位于您的原始类实例中)可以访问'responseString'和'responseData',因为这些方法被传递给'request'的引用。 – 2010-05-21 17:13:30
您可以使用此方法使用异步调用吗?我一直在搞乱它,并没有能够得到它的工作。试图弄清楚发生了什么。感谢您的帮助。 – Intelekshual 2010-05-21 22:30:12