代码之家  ›  专栏  ›  技术社区  ›  tarzanbappa

sap fiori ios sdk脱机odata筛选器问题

  •  0
  • tarzanbappa  · 技术社区  · 6 年前

    我正在尝试向脱机提供程序添加一个查询,如下所示。 我正试图为我的实体的DateTime属性添加一个筛选条件。 StartDate属性的数据类型代理生成的对象和 CommonUtility.getDefaultStartDateEndDate().startDate 是相同的-本地日期时间

    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-13T15:45:51.950)

    所以URL中有一个错误,因为 日期时间 在OData URL中,值应转换为DateTime,如下所示(必须是正确的URL)

    https://mobileurl.com/mservice/svsorderlist ?$select=*&$filter=(计划开始日期 GT日期时间2018-09-13T15:45:51.950)

    这个转换应该由sdk自己完成,不知道如何解决这个问题?

    有什么办法解决这个问题吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   SAP Fiori Crew    6 年前

    我假设您使用的是odata服务v4(因为datetime语句不包含在筛选器中)?

    所以问题不是缺少术语datetime,而是startdate格式。 看起来像commonutility.getDefaultStartDateEndDate()。StartDate返回的是DateTime,而不是必需的DateTimeOffset

    正确的url应该是 https://mobileURL.com/MService/svsOrderList ?$select=*&$filter=(计划开始日期GT 2018-09-13T15:45:51.950Z) 如果StartDate返回DateTimeOffset,则应自动生成