从sendAsynchronousRequest返回数据

时间:2012-05-14 13:55:08

标签: objective-c asynchronous callback return

目标c:我有一个serviceClass连接到具有NSURLConnectionsendAsynchronousRequest的数据库。

我希望能够使用此类方法并将db-data返回给请求它的任何其他类方法。

但由于sendAsynchronousRequest无效 - 我该怎么做?

我无法解决所有问题。块?但是如何......

请帮忙

atm我正在这个代码块中直接创建一个用户对象:

[NSURLConnection
 sendAsynchronousRequest:urlRequest
 queue:[[NSOperationQueue alloc] init]
 completionHandler:^(NSURLResponse *urlResponse,
                     NSData *data,
                     NSError *error) {

     if ([data length] > 0 && error == NULL){ // do success or error call with true or    false
         NSMutableData *incomingData;
         if(!incomingData) {
             incomingData = [[NSMutableData alloc]init];
         }
         [incomingData appendData:data];
         NSString *string = [[NSString alloc]initWithData:incomingData
                                                 encoding:NSUTF8StringEncoding];
         //incomingData = nil;

         // create dictionary from json
         NSData *jsondata = [NSData dataWithData:incomingData];
         NSMutableDictionary *userDictionary = [NSJSONSerialization JSONObjectWithData:jsondata 
                                                                                  options:NSJSONReadingMutableContainers 
                                                                                    error:NULL];
         // create user object
         User *user = [User userFromDictionary:userDictionary];
         NSLog(@"user back to object successfull!! %@", user);

     }



     }

1 个答案:

答案 0 :(得分:0)

您可以对incomingData使用property,然后使用该属性将数据传递给其他方法/类。

@property (nonatomic, retain) NSMutableData * incomingData;

现在您可以使用self.incomingData来设置值,然后您需要返回。您可以在其他方法中使用它,当您需要将它传递给其他类时,您可以传递它。