RestKit 0.20: отображение объектов restkit удваивает отображение атрибутов

Я использую RestKit 0.20 и обнаружил любопытное поведение отображения при использовании канонической нотации с точками (.). Я был бы рад, если бы вы могли объяснить простой способ обработки сопоставления объектов из сплющенного объекта, который я реализовал как NSManagedObject в IOS, для отношения объектов на стороне сервера.

Отображение почти корректно, но отображение геоданных.lat и geometoint.lon в качестве дополнительных полей является неправильным, с моей точки зрения, и вызывает исключение на сервере (исключение непризнанного свойства).

RKObjectMapping:

[mapping addAttributeMappingsFromDictionary:@{
 @"geopoint.lat": @"latitude",
 @"geopoint.lon": @"longitude",
 @"countrycode": @"countryId",
 @"county": @"county",
 @"postcode": @"postalcode",
 @"city": @"city",
 @"street": @"street",
 @"housenumber": @"housenumber"
 }];

Эффективный результат (отображается как выход журнала)

2013-01-29 09:29:38.856 CPlusApp[4285:907] T restkit.object_mapping:RKMappingOperation.m:514 Mapped relationship object from keyPath 'startAddress' to 'startAddress'. Value: {
city = aCity;
geopoint =     {
    lat = "48.8901234";
    lon = "8.818448999999998976";
};
"geopoint.lat" = "48.8901234";
"geopoint.lon" = "8.818448999999998976";
postcode = 91000;
street = Rennbrunnen;
}
2013-01-29 09:29:38.861 CPlusApp[4285:907] D restkit.object_mapping:RKMappingOperation.m:818 Finished mapping operation successfully...
0
nl ja de

1 ответы

Я был в аналогичной ситуации, и есть два решения, которые я вижу:

1) Create a new class for the geopoint with properties for lat and lon. Then add geopoint as a property in your object's class. Remove the two mappings (geopoint.lat & geopoint.lon) from the dictionary and add a relationship from keyPath 'geopoint' to 'geopoint'. From then on you can access the latitude and longitude via object.geopoint.lat and object.geopoint.lon.

2) Удалите отображение для запросов через что-то по строкам:

RKEntityMapping *addressRequestMapping = [mapping inverseMapping];

[addressRequestMapping removePropertyMapping:[addressRequestMapping propertyMappingsBySourceKeyPath][@"geopoint.lat"]];
[addressRequestMapping removePropertyMapping:[addressRequestMapping propertyMappingsBySourceKeyPath][@"geopoint.lon"]];

[manager addRequestDescriptorsFromArray:@[

 [RKRequestDescriptor addressRequestMapping objectClass:[Address class] rootKeyPath:nil]

]];

Вариант 1 позволит вам изменить координаты и вывести данные на сервер, тогда как вариант 2 не будет.

0
добавлено
Спасибо. Я тоже не вижу альтернатив. Тем временем я принял мою реализацию в option1. Теперь у меня есть еще один класс и таблица sql для поддержки.
добавлено автор ThomasW, источник
JavaScript Jobs — чат
JavaScript Jobs — чат
8 336 участник(ов)

JavaScript Jobs — чат для поиска работы и людей Правила оформления: https://teletype.in/@telegram-ru/r1WQe5F1m См. также: @mobile_jobs, @devops_jobs, @nodejs_jobs, @react_js, @angular_ru, @js_ru

JavaScript.ru
JavaScript.ru
7 932 участник(ов)

Сообщество сайта JavaScript.ru в Slack.

pro.js
pro.js
4 675 участник(ов)

Про JavaScript и NodeJS Invite: https://t.me/joinchat/Be4rsT5Rsgq30DHutjxXgA Правила: http://telegra.ph/ru-chat-rules-06-19 Вакансии только с ЗП, не чаще раза в неделю.

JavaScript — русскоговорящее сообщество
JavaScript — русскоговорящее сообщество
3 269 участник(ов)

Рекомендуем сразу отключить уведомления Правила: https://rudevs.network/ByaMH6un7 См. также: @js_noobs_ru, @nodejs_ru, @typescript_ru, @react_js, @electron_ru Вакансии и поиск работы: @javascript_jobs

JavaScript Noobs — сообщество новичков
JavaScript Noobs — сообщество новичков
2 484 участник(ов)

Чат для новичков

javascript_ru
javascript_ru
915 участник(ов)

Сообщество любителей самого популярного языка программирования в мире. Чат основан в 2009 году. Логи: https://goo.gl/9EOeM7 Поддержка бота: @chat_linker (ссылка на репу внутри) Вам будут интересны @frontend_ru и @css_ru

jsChat
jsChat
603 участник(ов)

Чат посвященный программированию на языке javaScript Перед отправкой ссылки на Ваш контент посоветуйтесь с админом Все ссылки удаляются ботом автоматически

JavaScript for Zombies Chat
JavaScript for Zombies Chat
492 участник(ов)

Чат про JavaScript для настоящих zombie! Вход строго по приглашениям! Ссылка для строгих приглашений: https://t.me/joinchat/AAMBHz3Uyr0tuZ7VaB029g

All That JS
All That JS
417 участник(ов)

JS на русском