Я написал некоторый код, чтобы поместить словарь NS (Mutable) в NSArray. Но после добавления словаря в массив, кажется, он создает отдельные словари для каждой пары ключ-значение. См. Пример ниже.Как добавить NSArray из NSDictionaries в запрос AFJSONRequestSerializer?
NSMutableDictionary *info = [[NSMutableDictionary alloc] init];
[info setObject:@"123" forKey:@"user_id"];
[info setObject:@"John" forKey:@"name"];
NSArray *array = [NSArray arrayWithObject:info];
NSMutableDictionary *htmlParams = [[NSMutableDictionary alloc] init];
[htmlParams setObject:array forKey:@"users"];
ожидается выход:
{
"users": [
{
"user_id": 123,
"name": "John
}
]
}
что я получаю:
{
"users": [
{
"user_id": 123,
}, {
"name": "John
}
]
}
Что я делаю неправильно?
Спасибо за помощь!
EDIT * Я пробовал еще кое-что, и, похоже, я понял, в чем проблема, но мне все же кажется странным.
Немного фона: когда я регистрирую NSDictionary, я действительно получаю ожидаемый результат. Но когда я отправляю его на задний план, он становится испорченным.
Я создал к новому NSDictionaries (как литералы объектов):
1:
NSDictionary *info = @{
@[
@{
@"firstname": @"John",
@"lastname": @"Doe",
},
@{
@"firstname": @"Jane",
@"lastname": @"Da",
},
]
};
2:
NSDictionary *info = @{
@0: @{
@"firstname": @"John",
@"lastname": @"Doe",
},
@1: @{
@"firstname": @"Jane",
@"lastname": @"Da",
},
};
1: идет неправильно, каждая строка в массиве выводятся в качестве другой словарь в моем бэкэнде. 2: ведет себя так, как ожидалось.
Я понятия не имею, что вызывает эту проблему, но я уверен, что это не мой пакет (AFNetworking), а также не мой back-end (Symfony PHP).
EDIT *
кажется мне нужно добавить JSon Serializer к моей просьбе.
AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
manager.requestSerializer = serializer;
принять NSMutableArray и AddObject в него затем установить этот массив в словаре –
Ваш код выглядит хорошо, это дает ожидаемый выход. –
Ваш код отлично подходит. Это дает то, что вы ожидаете. – Pushkraj