Получение данных от объекта, который использует NSURLConnection - PullRequest
0 голосов
/ 27 февраля 2012

У меня есть класс, который получает некоторые данные, используя 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: для NSURLConnection.

Не могли бы вы объяснить, каксделай это?Буду очень рад, если вы просто разместите ссылку на пример.Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 августа 2017
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"]);
    }];
0 голосов
/ 27 февраля 2012

Я не понимаю, как реализовать метод делегата для этого класса, который будет работать как соединение: didRecieveData: для NSURLConnection.

Так же, как NSURLConnection делает:

  1. Дайте этому объекту свойство с именем delegate.
  2. Установить это свойство для другого объекта.
  3. В connectionDidReceiveData: отправьте сообщение делегату.
  4. В делегате реализуйте метод, который будет вызывать другой объект.
...