【问题标题】:Swift: Backendless sorting relationship objectsSwift:无后端排序关系对象
【发布时间】:2016-10-08 06:57:11
【问题描述】:

我有这个 Backendless 表:Posts 和 Comments

Posts 有一个列 comments,它与 Comments 表具有一对多的关系。

我正在尝试以 latestOrder first 行为获得comments。

目前,我有这个查询:

  let query = BackendlessDataQuery()
  let queryOptions = QueryOptions()
  queryOptions.pageSize = size
  queryOptions.related = ["comments", "comments.user", "user", "media"]
  query.queryOptions = queryOptions
  // Used PostObject since it is already mapped using `mapTableToClass`
  backendlessInstance.persistenceService.of(PostObject.ofClass()).find(
    query,
    response: { backendlessPostsList in
      let backendlessPostsListOfOffset = backendlessPostsList.getPage(offset)
      guard let postObjects = backendlessPostsListOfOffset.getCurrentPage() as? [PostObject] else {
        reject(BackendlessError.InvalidTypeForObject(name: "Post"))
        return
      }
      return postObjects
    },
    error: { fault in
      // TODO Find a way to convert a Fault to ErrorType
      print("Server reported an error (1): \(fault)")
    }
  )

我目前正在对视图模型中的 Post.cmets 进行排序正在反转它。 Post.comments.reverse().

有没有办法在 Backendless 级别对 comments 进行显式排序?

【问题讨论】:

  • 您可以在查询选项上设置排序属性,我不确定您在问什么...
  • @Wain 我只想在不影响 PostObjects 顺序的情况下按 latestFirst 顺序对 cme​​ts 进行排序。

标签: ios swift backendless


【解决方案1】:

使用related 时您没有选项,因此您应该只将它用于一对一关系,而不是多对多关系。如果你有一对多的关系就可以了。

因此,您应该对 cme​​ts 发出单独的请求,以便指定特定的页面大小和排序顺序。请注意,当您指定要排序的变量时(created),您还可以添加asc 或desc 来指定排序方向(所以created desc)。

【讨论】:

  • 我明白了。感谢温文的建议! :)
【解决方案2】:

你可以使用排序功能。

let sortedComments = Post.comments.sort { $0.date > $1.date }

当然,您的 cmets 需要一个发布的日期字段才能使用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-22
    • 2013-07-16
    • 2021-04-18
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多