Я разрабатываю простое приложение в iOS, которое получает веб-API данных, мой код правильно возвращал данные json, но когда я хочу указать, например, имя студента из json, возвращается null. Вот мои данные:
{
Sudent(
{
{"id":"20",
"name":"Alan",
"email":"[email protected]",
"phone":"1234567890",
"location":"London"},
{
"id":"40",
"name":"John",
"email":"[email protected]",
"phone":"1234567890",
"location":"usa"},
"id":"50",
"name":"Nora",
"email":"[email protected]",
"phone":"1234567890",
"location":"kenya"},
})}
Вот мой код, который получает данные как json и хранит NSMutableArray с именем Student:
-(void)proxydidFinishLoadingData:(id)data InMethod:(NSString*)method
{
if ([method isEqualToString:@"getstudentdata"]){
defaultDict = [[NSMutableDictionary alloc]init];
[defaultDict addEntriesFromDictionary:[NSJSONSerialization JSONObjectWithData:[data dataUsingEncoding:NSUTF8StringEncoding] options:0 error:nil]];
Student = [defaultDict objectForKey:@"data"];
}
}
этот код работает нормально и правильно и возвращает данные json, но проблема в том, что когда я хочу получить конкретный индекс, такой как имена студентов, это не работает, он возвращает нулевое значение. код, выполняющий эту работу, находится здесь:
NSMutableDictionary *response = [[defaultDict valueForKey:@"data"] mutableCopy];
NSString *name = [[response valueForKey:@"name"]];
];
NSLog(@"%@" ,name);
Пожалуйста, помогите мне получить имена студентов
сначала получите NSArray студентов, тогда вы сможете получить имя из словаря.
как получить, пожалуйста, помогите мне
@Mrdavidalan, можете ли вы получить данные в своем массиве? Да или нет.
извините, этот формат недействителен.
да, я могу получить данные в моей переменной ответа NSMutableDictionary *. например, в приведенном выше коде, когда я проверяю отображение значений переменной ответа, он отлично работает и отображает все мои данные json. но если я хочу получить конкретные данные, такие как имена студентов, это не работает, он возвращает null
подождите, я обновлю свой ответ.
Судя по вашему ответу, это Array из Dictionary, так что [[studentData objectAtIndex:0] objectForKey:@"name"] должен работать на вас.
Я пробовал это, но он отображает следующую ошибку NSInvalidArgumentException ', причина:' - [__ NSSingleEntryDictionaryI objectAtIndex:]: неопознанный селектор, отправленный на экземпляр 0x604000421fc0 ', пожалуйста, помогите этому





Вы проверяете ключ «имя» в ключе «данные», но на самом деле он присутствует в ключе «Студент».
Выполните синтаксический анализ объекта Student и с помощью цикла for получите одно за другим значение ключа "name".
Используйте этот сайт http://www.json4swift.com/ для создания модели (просто вы должны поместить сюда ответ JSON).
Var dataModelArray = [Your_Model_Type]()
if let data = data[“student”] as? [String: AnyObject] {
dataModelArray = Your_Model_type.modelsFromDictionaryArray(array: data)
}
// И у вас будет массив данных в вашем dataModelArray // Пример, к которому вы можете получить доступ вот так
dataModelArray[0].name
Можете ли вы помочь мне на простом примере, я новичок в ios
См. Мой отредактированный ответ ... Это даст вам подсказку, и это идеальный процесс
Тег swift в вопросе отсутствует.
Непонятно: что именно вы напечатали? Избегайте использования
valueForKey:, я не рекомендую его для новичков, используйте вместо негоobjectForKey:, а почему двойные скобки в[[response valueForKey:@"name"]]? Что именно в этом случае представляет собойresponse? Я вижуNSArrayв вашем журнале, но ничего об этом.