#ios #objective-c #restkit
#iOS #objective-c #restkit
Вопрос:
У меня есть класс Objective C, который имеет следующие атрибуты
@property(nonatomic, strong) NSString *name;
@property(nonatomic, strong) NSMutableArray *companies;
@property(nonatomic, strong) NSMutableArray *users;
@property(nonatomic, strong) NSMutableArray *tags;
Эти массивы представляют собой коллекции других объектов (экземпляров Company, User и класса тегов).
Мне нужно создать requestDescriptorWithMapping для запроса POST, который
поместит все элементы массивов в один с именем params со следующей
структурой:
{ name: "Test",
params: [
{param:'company', values:['CompanyName1','CompanyName2'..],
{param:'users', values:['UserName1','UserName2'..]
]
}
Как лучше всего поступить здесь? Я тестирую RKBlockValueTransformer, но
пока безуспешно. Я могу создать этот массив вручную, создав три NSMutableDictionaries, но хотел проверить, есть ли лучший способ для этого.
Комментарии:
1. Покажите свой блочный преобразователь и насколько он приближает вас к тому, что вы хотите. Нет волшебного способа получить желаемое представление, поскольку вы создаете новые данные для значения ‘param’.
Ответ №1:
Вы могли бы сделать это:
[@{ @"name": self.name,
@"params": @[
@{@"param":@"company", values:[self.companies valueForKey:@"name"]}
@{@"param":@"users", values:[self.users valueForKey:@"name"]}
]
} mutableCopy]
Предполагая, что ваши классы Company и User имеют свойство name. И если вы не используете ARC, вам нужно будет автоматически удалить результат mutableCopy
Комментарии:
1. правильно, это «ручной» способ. Есть ли способ интегрировать это в RestKit?
2. Что вы имеете в виду под интеграцией в RestKit?
3. например, могу ли я использовать этот словарь здесь: RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[self class]]; [сопоставление addAttributeMappingsFromDictionary:thatDictionary]; ?