【问题标题】:swift parse query get last createdAt objects快速解析查询获取最后创建的对象
【发布时间】:2015-08-21 22:02:03
【问题描述】:

我做了很多查询,在网站上搜索过,之前已经问过这个问题,但我没有找到一个好的答案!

我的 Parse 后端如下所示:

在我的视图控制器中,我只想为每个发件人显示 Last createdAt 我想为发件人获取最后一个对象的所有行:。

所以我们应该忽略“name1:Hello”和“name2:真的是什么时候......”,因为这些旧行我们已经得到了新对象。

我希望每个发件人的一个结果取决于 createdAt

那么我可以在查询方面获得帮助吗?或者我们该怎么做?

let query = PFQuery(className: "test")
        query.whereKey("receivers", equalTo: PFUser.currentUser()!.username!)
        query.orderByDescending("createdAt")
        query.findObjectsInBackgroundWithBlock {
            (objects, error) -> Void in

            if error == nil {

                // now what? I've done everything i could none worked fine

希望我能得到帮助,所以如果可以的话,请帮助我。

【问题讨论】:

  • 你不会只从返回的数组中取出第一项吗? (首先检查长度是否大于零。)
  • @JoeBlow 你好,能给我看一下代码示例吗?
  • 将用户指向他们发送的最后一条消息的指针。
  • @Wain 你好,你能告诉我我该怎么做吗?我对这些东西有点陌生
  • @Wain 您的意思是在后端创建包含 FALSE 或 TRUE 的新列吗?并为最后发送的消息设置 TRUE ?如果是,如果有很多消息,发送消息需要时间怎么办?并且需要很长时间才能将旧消息更改为 false ?

标签: ios swift parse-platform pfquery


【解决方案1】:

您可以在查询中添加limit。请参阅解析文档。

 let query = PFQuery(className: "test")
    query.whereKey("receivers", equalTo: PFUser.currentUser()!.username!)
    query.orderByDescending("createdAt")
    query.limit = 1
    query.findObjectsInBackgroundWithBlock {
        (objects, error) -> Void in

        if error == nil {

【讨论】:

  • 您好,这只会给我一个结果!我希望每个不同的用户名都有一个结果,所以如果有 3 个用户,我会得到 3 个结果
【解决方案2】:

您的数据模型并不适合快速执行此操作。但是,如何设置数据模型取决于您的所有需求,而不仅仅是一个需求。

为方便起见,您应该添加一个从您的User 到您的Message 的指针,并且每次用户发送消息时,您都设置该指针(它会替换旧指针)。

现在,您可以简单地查询Users,使用includeKey 来获取消息,并显示您的列表。

【讨论】:

  • 嗨,我不知道如何使指针从用户到消息,你能告诉我如何做到这一点的例子吗?我会很感激的
  • 如果有一列有名字,他们只是接收消息的人呢?我想接收发送给我的最后一条消息,而不是发送给其他人
  • 这正是我说数据模型需要由所有需求驱动的原因。为此,您应该有另一个类,其中包含指向每个用户的指针以及每个发送给另一个用户的最后一条消息。查看解析文档了解指针的工作原理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多