2016-04-05 18 views
1

I uyarılar alıyorum:yeniden düzenleme afnetworking sonrası isteği 3.0

Incompatible pointer types assigning to 'AFHTTPSessionManager *' from 'NSURLSessionDataTask * _Nullable'

'POST:parameters:success:failure:' is depreceated 

AFNetworking 3.0 ile bir istek yapmaya çalışıyorum. IOS 7.0 veya sonraki bir sürümünü kullanan bir uygulama için AFNewtworking 3.0 ile bir posta isteği yapmak için doğru yaklaşımın ne olduğunu merak ediyorum.

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
    [manager setResponseSerializer:[SignupResponseSerializer serializer]]; 

    __weak typeof(self)weakSelf = self; 

    NSString *urlString = [NSString stringWithFormat:@"%s%s", kBaseURL, kRegisterURL]; 

    NSData *plainData = UIImagePNGRepresentation(self.profilePicture); 
    NSString *base64String = [plainData base64EncodedStringWithOptions:0]; 

    if (self.firstNameField.text && self.lastNameField.text && self.passwordField.text && self.emailField.text) { 
     NSDictionary *params = @{ @"first_name": self.firstNameField.text, @"last_name": self.lastNameField.text, @"password": self.passwordField.text, @"email": self.emailField.text, @"avatar_data": base64String}; 

     self.sessionManager = [manager POST:urlString parameters:params success:^(NSURLSessionTask *task, id responseObject) { 
      NSDictionary *JSON = [responseObject objectAtIndex:0]; 
      NSString *token = JSON[@"auth_token"]; 
      NSString *avatarURL = JSON[@"avatar_url"]; 


      weakSelf.credentialStore.avatarURL = avatarURL; 
      weakSelf.credentialStore.authToken = token; 
      weakSelf.credentialStore.firstName = self.firstNameField.text; 
      weakSelf.credentialStore.lastName = self.lastNameField.text; 
      weakSelf.credentialStore.email = self.emailField.text; 
      weakSelf.credentialStore.password = self.passwordField.text; 

      [SVProgressHUD dismiss]; 
      [self dismissViewControllerAnimated:YES completion:nil]; 
     } failure:^(NSURLSessionTask *task, NSError *error) { 
//   if (task.isCancelled) { 
//    return; 
//   } 
      [SVProgressHUD showErrorWithStatus:@"Login Failed"]; 
      NSLog(@"%@", error); 
     }]; 
    } 

cevap

1

AFNetworking 3.0'da POST yöntemi isteği ile bir NSURLSessionDataTask nesnesi döndürür: İşte benim kodudur. Ayrıca, isteğin ilerleyişini izlemek için çağrılan bir blok olan progress parametresine sahiptir. Buna

self.sessionManager = [manager POST:urlString parameters:params success:^(NSURLSessionTask *task, id responseObject) { 
... 

:

//If you want a reference to the manager you can initialize the sessionManager var like this but it's not necessary 
self.sessionManager = manager; 
[manager POST:urlString parameters:params progress:^(NSProgress * _Nonnull uploadProgress) { 
     //progress block implementation 
    } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { 
     //success block implementation 
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { 
     //failure block implementation 
    }]; 

Bu yüzden bundan yöntem başlatmaya değiştirmek önermek
İlgili konular