我关注的用户的 Swift Parse 查询

标签 swift xcode parse-platform tableview

我目前有一个查询,它返回我服务器上所有用户的表格,如果我关注他们,他们的名字旁边会有一个复选标记。这是代码:

//REFRESHER
func refresh() {

    self.usernames.removeAll()
    self.userIDs.removeAll()
    self.isFollowing.removeAll()


    let query = PFUser.query()

    query?.findObjectsInBackground(block: { (objects, error) in

        if error != nil {
            print(error)

        } else if let users = objects {

            //self.usernames.removeAll()
            //self.userIDs.removeAll()
            //self.isFollowing.removeAll()

            for object in users {

                if let user = object as? PFUser {

                    if user.objectId != PFUser.current()?.objectId {

                        self.usernames.append(user.username!)
                        self.userIDs.append(user.objectId!)

                        let query = PFQuery(className: "Followers")

                        query.whereKey("follower", equalTo: PFUser.current()?.objectId)
                        query.whereKey("following", equalTo: user.objectId)

                        query.findObjectsInBackground(block: { (objects, error) in

                            if let objects = objects {

                                if objects.count > 0 {

                                    self.isFollowing[user.objectId!] = true

                                } else {

                                    self.isFollowing[user.objectId!] = false

                                }

                                if self.isFollowing.count == self.usernames.count {

                                    self.tableview.reloadData()

                                    self.refresher.endRefreshing()

                                }

                            }

                        })


                    }

                }

            }
            //self.refresher.endRefreshing()

        }


    })

}

我试图返回一个只有我关注的用户的表,但是我似乎无法让它工作,因为我的关注者类在 PFUser 类之外,因此很难附加用户名和用户 ID Follower 类中的用户。

我的 Followers 类有四列,follower 和 following 是每个用户各自的用户 ID,然后是 followerUsername 和 followingUsername,它们是各自用户的用户名。对此的任何帮助将不胜感激。谢谢!

更新:我现在在 Parse 中使用指针来引用 followerfollowing,下面是我尝试查询我正在关注的用户的方式。此实现不起作用,所以如果有人能指出正确的方向,我将不胜感激!

     func refresh() {

    self.usernames.removeAll()
    self.userIDs.removeAll()
    self.isFollowing.removeAll()


           let query = PFQuery(className: "Followers")

           query.includeKey("following")

           query.whereKey("follower", equalTo: PFUser.current()?.objectId)


           query.findObjectsInBackground(block: { (objects, error) in

                            if error != nil {
                                print(error)

                            } else if let following = objects {

                                for object in following {

                                    if let usersFollowing = object as? PFObject {


           self.usernames.append(usersFollowing["followingUsername"] as! String)
           self.userIDs.append(usersFollowing["following"] as! String)


                            if let objects = objects {

                                if objects.count > 0 {


          self.isFollowing[usersFollowing["following"] as! String] = true

                                } else {

          self.isFollowing[usersFollowing["following"] as! String] = false

                                }

          if self.isFollowing.count == self.usernames.count {

                                    self.tableview.reloadData()

                                    self.refresher.endRefreshing()

                                }
                                            }
                                        }

                                }
                            }
    })
}

这是我的两张 table

userPost Table

Follower Table

最佳答案

您所拥有的嵌套查询和表重新加载的效率低得离谱……一旦您获得相当数量的用户,您就会执行太多查询并且很难刷新该表。

您想要一个只包含您当前用户关注的所有用户的表格吗?您的 Followers 表应该使用指针而不是对象 ID,那么您可以只使用 includeKeys查询方法让它获取 following Followers 的领域对象,并找到所有对象 follower等于当前用户。

有了 ID,您可以使用 Followers 执行 matchesKeyInQuery 方法查询哪里follower等于当前用户的ID,User查询有matchesKeyInQuery,key为objectId,queryKey为following,query为Follower查询。但是指针是连接表的正确方法,而不是存储 ID。

您还可以查看 Relations,它可能非常适合跟踪您关注的用户。

关于我关注的用户的 Swift Parse 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48879865/

相关文章:

ios - 我怎样才能在一个额外的功能中外包这种重复的代码味道? iOS Swift 函数

ios - Firebase -'isDirectChannelEstablished' 已弃用 : FCM direct channel is deprecated, 请使用 APNs channel 进行下游消息传递

ios - 此设备不符合请求的构建条件

ios - 在 iOS 应用程序 Xcode 中连接 AWS RDS 和服务器实例

ios - swift 2.0 :Need to display image(PFFile) on PFQueryTableViewController from Parse?

ios - 如何查询距离超过 x 英里的 parse.com 内容?

javascript - 获取解析 session ID

ios - JSON 文件中有 É。当我从服务器上的提要下载时,无法解析返回的数据。项目中本地副本中的相同数据可以下载吗?

ios - 尝试在 Xcode 中本地化项目时,XLIFF 不包含所有形式的复数形式

iphone - 扩展多行 UILabel