Отклик я имеюReskit Для Empty Родитель
<people>
<person>
...
</person>
<person>
...
</person>
</people>
Я хочу сделать отображение человека с моим CoreData контакта объекта. Проблема заключается в том, что нет записей о человеке, у которых ответ имеет пустые теги людей, и это дает мне исключение, если не найдены отображаемые объекты.
Моего отображения как:
+ (RKEntityMapping *)contactMapping {
//RKObjectMapping *mapping = [RKObjectMapping mappingForClass:[Contact class]];
RKEntityMapping *mapping = [RKEntityMapping mappingForEntityForName:@"Contact"
inManagedObjectStore:[[HRCoreData sharedInstance] objectStore]];
NSDictionary *mappingDictionary = @{@"id.text": @"contactId",
@"title.text": @"title",
@"first-name.text": @"firstName",
@"last-name.text": @"lastName",
@"company-name.text": @"companyName"
};
[mapping addAttributeMappingsFromDictionary:mappingDictionary];
mapping.identificationAttributes = @[@"contactId"];
return mapping;
}
Ответ установка дескриптор:
RKResponseDescriptor *personResponseDescriptors = [RKResponseDescriptor responseDescriptorWithMapping:[MappingProvider contactMapping] method:RKRequestMethodGET pathPattern:nil keyPath:@"people.person" statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
[self addResponseDescriptor:personResponseDescriptors];
Как проверить, если ребенок существует, или если родитель пуст и сделать отображение соответственно?
@ Edit- Я попытался динамическое отображение таким образом:
+ (RKDynamicMapping *) dynPeopleMapping {
// Basic setup
RKDynamicMapping* dynamicMapping = [RKDynamicMapping new];
RKEntityMapping *conMapping = [MappingProvider contactMapping];
[conMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"person" toKeyPath:@"Contact" withMapping:dynamicMapping]];
// Configure the dynamic mapping via a block
[dynamicMapping setObjectMappingForRepresentationBlock:^RKEntityMapping *(id representation) {
if([representation valueForKeyPath:@"people.person"]){
// what can i do here to map person with contact when it exists?
return conMapping;
}else
return nil;
}];
return dynamicMapping;
}
Но его не картирование контактное лицо в качестве лица, является сбор массива с данными и контакт является одним из основных объектов данных для одного человека. Как я могу их сопоставить?
Вы могли бы использовать динамическое отображение, или иметь сервер возвращает другой код состояния, когда нет никакого содержания. – Wain
@ Спасибо за ответ. Я отредактировал мой пост (нет успеха!) – Dips
Те же ошибки? Я думаю, вам нужно будет использовать только «@» людей »в качестве ключевого пути в дескрипторе ответа, а затем в динамическом сопоставлении. Вам также может понадобиться контейнерный объект. Можете ли вы изменить интерфейс на JSON? Я думаю, что это также проблема, связанная с XML, из-за вложенного ключа. – Wain