【问题标题】:Getting data from the object, that uses NSURLConnection从使用 NSURLConnection 的对象中获取数据
【发布时间】:2012-02-26 22:00:45
【问题描述】:

我有一个类,它使用NSURLConnection 获取一些数据。它的方法getData 创建一个对服务器的请求,当收到一些数据时,方法connection:didRecieveData: 更新一些属性。

- (void)getData
{
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:dataURL];
    NSURLConnection *connectionWithRequest = [NSURLConnection connectionWithRequest:request delegate:self];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    // Processing data
    dataProperty = processedData;
}

问题是,当我创建这个类的一个实例并调用方法getData时,我无法立即获取对象的属性,因为还没有收到数据。我已经阅读了有关委托和协议的 Apple 参考资料,但我不明白如何为此类实现委托方法,就像 connection:didRecieveData: for NSURLConnection 一样。

你能解释一下怎么做吗?如果您仅发布示例链接,我将非常高兴。谢谢。

【问题讨论】:

标签: objective-c cocoa delegates nsurlconnection


【解决方案1】:

我不明白如何为这个类实现委托方法,它的工作方式类似于 connection:didRecieveData: for NSURLConnection。

和 NSURLConnection 一样:

  1. 给这个对象一个名为delegate的属性。
  2. 将该属性设置为另一个对象。
  3. connectionDidReceiveData: 中,向代表发送消息。
  4. 在委托中,实现其他对象将调用的方法。

【讨论】:

  • 谢谢!它看起来很简单,我认为这是我需要的。
【解决方案2】:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"YOUR API URL"]];

    NSString *email = @"username@gmail.com";
    NSString *password = @"123456";
    NSString *deviceToken = @"simulator";
    NSString *deviceType = @"1";

    NSString *post = [NSString stringWithFormat:@"email=%@&password=%@&deviceToken=%@&deviceType=%@",email,password,deviceToken,deviceType];

    NSData *requestBodyData = [post dataUsingEncoding:NSUTF8StringEncoding];
    request.HTTPMethod = @"POST";
request.HTTPBody = requestBodyData;
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue]
                           completionHandler:^(NSURLResponse response, NSData responseData, NSError *error)
     {
         NSLog(@"%@",responseData);
         NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:nil];
         NSLog(@"%@",dic[@"data"]);
    }];

【讨论】:

  • 可能一些解释会有所帮助,因为 OP 特别要求它。最好的问候
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-14
  • 2017-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
相关资源
最近更新 更多