gpt4 book ai didi

ios - 将 afnetworking post 请求重构为 3.0

转载 作者:行者123 更新时间:2023-11-29 12:02:15 28 4
gpt4 key购买 nike

我收到警告:

从“NSURLSessionDataTask * _Nullable”分配给“AFHTTPSessionManager *”的不兼容指针类型

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

尝试使用 AFNetworking 3.0 发出请求时。我想知道对于使用 iOS 7.0 或更高版本的应用程序,使用 AFNewtworking 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);
}];
}

最佳答案

在 AFNetworking 3.0 中,POST 方法返回一个包含您的请求的 NSURLSessionDataTask 对象。此外,现在它还有一个 progress 参数,这是一个用于跟踪请求进度的 block 。
所以我建议你改变这个方法调用:

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

关于ios - 将 afnetworking post 请求重构为 3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36427452/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com