Я пытаюсь создать экран входа в систему, где нужно ввести его имя пользователя и пароль. При нажатии кнопки входа в систему я разбираю детали на сервере. Вот кодУправляющий поток во время разбора json - Objective C
NSString *post = [NSString stringWithFormat:@"username=%@&password=%@",[_userNameText text],[_passwordText text]];
NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *postLength = [NSString stringWithFormat:@"%lu" , (unsigned long)[postData length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://*******/*****/******/userLogin.php"]];
[request setHTTPMethod:@"POST"];
[request setValue:postLength forHTTPHeaderField:@"sample data"];
[request setHTTPBody:postData];
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
[[session dataTaskWithRequest:request completionHandler:^(NSData *data , NSURLResponse *response , NSError *error){
_requestReply = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"%@",_requestReply);
}] resume];
Пока код работает точно так же, как предполагалось. Теперь я хочу проверить, имеет ли «requestReply», который возвращается с сервера, значение «успех» для его «статуса». Поэтому я попытался напечатать его значение с помощью следующего кода.
_responseData = _requestReply;
NSLog(@"%@" , _responseData[@"status"]);
А вот выход консоли
2016-10-21 06:44:03.424 QuizApp2[65724:1287972] (null)
2016-10-21 06:44:03.501 QuizApp2[65724:1288003] {"status":"success","message":"Welcome admin","code":true}
Я не уверен, но я чувствовал, что последняя строка кода выполняется до того, как синтаксический происходит. Может ли кто-нибудь обратить внимание на то, как здесь действует контроль? Или что-то не так с моим кодом?
где вы называете '_responseData = _requestReply;'? внутри блока 'session dataTaskWithRequest' или снаружи? – Ti3t
сразу после «резюме». Вне –
ahh, если это так во время его запуска, '_requestReply' не имеет данных, потому что блок работает асинхронно. Если вы поместите эти 2 строки внутри блока, он будет работать – Ti3t