2012-05-14 41 views
0

目标c:我有一个服务类连接到db与NSURLConnectionsendAsynchronousRequest从sendAsynchronousReques返回数据

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

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

我无法在所有atm处理我的头。块?但如何...

请帮

ATM我直接在此codechunk创建用户对象波纹管:

[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); 

    } 



    } 
+0

你是否在incomingData中获取数据? – rishi

+0

是的。我从数据库中获取数据。到目前为止这么好.. – Pedroinpeace

+0

你想在这个类本身访问incomingData?如果是这种情况,那么您可以为此创建属性并通过课程访问它。 – rishi

回答

0

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

@property (nonatomic, retain) NSMutableData * incomingData; 

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

+0

但我怎样才能从异步完成处理程序中返回传入的数据?当我从另一个方法/类调用它时,它会变为null,因为asyncrounus仍然在后台工作。 希望你明白我的问题。 – Pedroinpeace

+0

我不是说要返回任何东西,你只是将数据设置为一个属性,现在你可以将它传递到任何地方而无需返回,你尝试过实现这个吗? – rishi