Iphone 返回cocoa中的数组,但等待委派完成

Iphone 返回cocoa中的数组,但等待委派完成,iphone,objective-c,cocoa,cocoa-touch,Iphone,Objective C,Cocoa,Cocoa Touch,我在cocoa中创建了以下方法: -(NSArray *)latestData { NSURL *requestingURL = [NSURL URLWithString:@"someRestfulURL"]; NSMutableURLRequest *theRequest =[NSMutableURLRequest requestWithURL:requestingURL]; [theRequest setHTTPMethod:@"GET"]; NSURLC

我在cocoa中创建了以下方法:

-(NSArray *)latestData
{
    NSURL *requestingURL = [NSURL URLWithString:@"someRestfulURL"];

    NSMutableURLRequest *theRequest =[NSMutableURLRequest requestWithURL:requestingURL];
    [theRequest setHTTPMethod:@"GET"];

    NSURLConnection *theConnection = [NSURLConnection connectionWithRequest:theRequest delegate:self];

    if(theConnection)
    {
        webData = [[NSMutableData data]retain];
    }
    else
    {
        NSLog(@"the connection is NULL");
    }
    return someArray;
}
我调用的RESTful Web服务返回我使用NSXMLParser解析的XML

如果我必须等待NSURLConnection和NSXMLParser的委托方法完成,然后才能用适当的数据填充数组,那么在调用
latestData
时如何返回数组?

您可以做的事情很少 1.使请求同步,这样您将在返回时拥有数组。
2.如果要使其异步,而不是返回数组,请将数组作为类成员,并将其填充到finishedRequest委托方法中

[NSXMLParser parse parse]在解析完成之前不会返回,因此它已经具有您想要的行为,并且NSURLConnection已发送SynchronousRequest:returningResponse:error:用于同步请求


如果您在主线程上运行此操作,则应该考虑是否可以使方法异步,因为在网络请求上阻塞UI会导致用户体验不佳。但是,我如何将这些数据传递给解析器,并且仍然在方法中返回一个数组呢?假设您的响应是XML或Json,您可以执行[[NSString alloc]initWithData:encoding:]以重新获取文本,然后您可以对其进行解析如果您执行的是简单获取,那么您还可以使用NSString*RESPONSSTRING=[NSString stringWithContentOfURL:url]要同步获取您的响应,我如何异步执行并仍然返回数组??我有一个类请求,这个方法是一个类级变量,对于上面方法中的数组,真的是可行的??你需要一个委托参数,让委托实现一个已知的回调方法,该方法需要一个数组。这将如何实现??你能给我提供一个代码示例吗?Cocoa有很多这样的示例;上面您自己的示例代码中的NSURLConnection调用是一个,而工作表是另一个。