swift SAP Fiori IOS SDK离线OData过滤器问题

j2cgzkjk  于 2023-05-16  发布在  Swift
关注(0)|答案(1)|浏览(130)

我试图添加一个查询到离线提供商如下。我正在尝试为我的实体的DateTime属性添加一个筛选条件。代理生成对象和CommonUtility.getDefaultStartDateEndDate().startDate的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=(计划_开始_日期gt 2018-09- 13 T15:45:51.950))
所以url中有一个错误,因为Datetime值应该转换为OData URL中的datetime,如下所示(正确的URL必须是)
https://mobileURL.com/MService/svsOrderList?$select=
&$filter=(计划_开始_日期gt日期时间2018-09- 13 T15:45:51.950))
这个转换应该由SDK自己完成不知道如何解决这个问题?
有什么办法解决这个问题吗?

u4dcyp6a

u4dcyp6a1#

我假设您使用的是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- 13 T15:45:51.950Z)),如果startDate返回DateTimeOffset,则应自动生成

相关问题