Оффлайн фильтр данных OData SAP Fiori IOS SDK - PullRequest
0 голосов
/ 13 декабря 2018

Я пытаюсь добавить запрос к офлайн провайдеру, как показано ниже.И я пытаюсь добавить условие фильтра для свойства DateTime моей сущности.Типы данных свойства startdate и объекта, сгенерированного прокси, и CommonUtility.getDefaultStartDateEndDate().startDate одинаковы - Local-DateTime

try offlineODataProvider.add(definingQuery: OfflineODataDefiningQuery(name: MobileServiceMetadata.EntitySets.svsOrderList.entityType.localName, query:
 DataQuery().from(MobileServiceMetadata.EntitySets.svsOrderList).where(SvsOrderListType.plannedStartDate.greaterThan(CommonUtility.getDefaultStartDateEndDate().startDate)).selectAll(),automaticallyRetrievesStreams: false));

Но выдает ошибку, говорящую о синтаксической ошибке в запросе OData.Поэтому, когда я проверяю URL-адрес в описании ошибки, он выглядит следующим образом.

https://mobileURL.com/MService/svsOrderList?$select=*&$filter=(PLANNED_START_DATE gt 2018-09-13T15: 45: 51.950))

Таким образом, в URL-адресе есть ошибка, поскольку значение Datetime должно быть преобразовано в datetime в URL-адресе OData, как показано ниже (правильный URL-адрес должен быть)

https://mobileURL.com/MService/svsOrderList?$select=*&$filter=(PLANNED_START_DATE gt datetime 2018-09-13T15: 45: 51.950))

Это преобразование должно быть выполнено самим SDK, без понятия о том, как решить эту проблему?

Есть лилюбой способ решить это?

1 Ответ

0 голосов
/ 08 января 2019

Я предполагаю, что вы используете OData Service V4 (поскольку оператор dateTime не включен в фильтр)?

Таким образом, проблема заключается не в отсутствующем термине «datetime», а в «startdate» -формат.Похоже, «CommonUtility.getDefaultStartDateEndDate (). StartDate» возвратил DateTime вместо DateTimeOffset, как требуется

Правильный URL-адрес будет https://mobileURL.com/MService/svsOrderList?$select=*&$filter=(PLANNED_START_DATE gt 2018-09-13T15: 45: 51.950Z)), чтодолжен генерироваться автоматически, если startDate возвращает DateTimeOffset

...