в моем PHP-бэкэнде я возвращаю JSON примерно так:
$results_array=array();
$stmt->bind_result($IdUser,$username);
while($stmt->fetch()) {
$row = array();
$row["IdUser"]=$IdUser;
$row["username"]=$username;
$results_array[]=$row;
}
$stmt->close();
echo json_encode(array("Response"=>"Login okay", "code"=>200, "results"=>$results_array));
Мой менеджер AFHTTPRequestOperation возвращает responseObject (именованные результаты).
Теперь я хочу получить пользователя:
NSDictionary *user = (NSDictionary *)[results objectForKey:@"results"];
NSLog(@"%@",user);
[[API sharedInstance] setUser:user];
[self.navigationController popViewControllerAnimated:YES];
[self showAlertWithTitle:@"Logged in" andMessage:[NSString stringWithFormat:@"Welcome %@",[user objectForKey:@"username"]]];
Приложение вылетает с "NSInvalidArgumentException', reason: '-[__NSCFArray objectForKey:]: unrecognized selector sent to instance"
, Я проверяю объект «пользователь» с помощью NSLog, я получаю:
{
IdUser = 49;
имя пользователя = кенни;
}
который все еще в формате JSON. Что я здесь не так делаю? Почему он не десериализуется в NSDictionary в NSDictionary?
У вас есть массив элементов типа «Пользователь» и «результаты» содержит и массив словарей, а не простой словарь. Попробуйте этот код:
NSArray *userList = results[@"results"];
NSDictionary *user = userList.firstObject;
Других решений пока нет …