В моем приложении я сделать что-то вроде этого:RestKit 0.2x: как проверить существование ключевого ресурса перед применением отображения
[itineraryMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"inboundInfo" toKeyPath:@"inboundInfo" withMapping:flightInfoMapping]];
но ключ inboundInfo
может и не может вернуться с JSON
согласно некоторые критерии, я не хочу добавлять целый новый (большой) дескриптор ответа к objectManager
, чтобы удовлетворить этот случай, однако есть ли способ проверить, существует ли ключ ключа inboundInfo
или нет, перед добавлением сопоставления свойств?
p.s. в случае, если inboundInfo
не вернулся с JSON
, указанная выше строка сделает сбой, удалив строку, приложение будет в порядке.
EDIT: решается с помощью RKDynamicMapping
так:
//configuring the dynamic mapping
[dynamicMapping setObjectMappingForRepresentationBlock:^RKEntityMapping *(id representation) {
if([[representation objectForKey:@"inboundInfo"] isKindOfClass:[NSDictionary class]]) {
if(![itineraryMapping.propertyMappings containsObject:inboundInfoMapping]) { //to prevent adding inboundInfoMapping more than once
[itineraryMapping addPropertyMapping:inboundInfoMapping];
}
}
//if inboundInfo is not a dictionary simply return the itineraryMapping without adding inboundInfoMapping on it
return itineraryMapping;
}];
метод setObjectMapping: whenValueOfKeyPath: isEqualTo устарел в документации, потому что не существует в 0.2x ... – JAHelia