2016-04-05 14 views
1

に私は警告を取得しています:リファクタリングafnetworkingポスト要求は3.0

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

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

AFNetworking 3.0で要求をしよう。私は、正しいアプローチがiOS 7.0以降を使用しているアプリケーション用のAFNewtworking 3.0で投稿要求を行うことになっているのだろうかと思っています。ここに私のコードは次のとおりです。AFNetworking 3.0で

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); 
     }]; 
    } 

答えて

1

POSTメソッドは、あなたの要求にNSURLSessionDataTaskオブジェクトを返します。 さらに、要求の進行状況を追跡するために呼び出されるブロックであるprogressパラメータを持ちます。
だから私はあなたがここからメソッド呼び出しを変更することをお勧め:これに

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 
    }]; 
関連する問題