我目前有一个查询,它返回我在服务器上拥有的所有用户的表格,如果我按照他们的名字,则会在其名称旁边显示一个复选标记。这是代码:
//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类,因此它就是这样难以在Follower的课程中附加用户的用户名和用户ID。
我的关注者类有四列,关注者和跟随者,后面是每个用户的相应用户ID,然后是followerUsername和followingUsername,它们是各个用户的用户名。任何有关这方面的帮助将非常感激。谢谢!
更新:我现在正在使用指针在Parse中引用follower
和following
,以及我如何尝试向用户查询我'我跟着。这个实现是不行的,所以如果有人能指出我正确的方向,我非常感激!
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()
}
}
}
}
}
})
}
这是我的2个表格
答案 0 :(得分:1)
使用嵌套查询和表重新加载,你所拥有的是非常低效的......一旦你获得了大量的用户,你就会执行太多的查询并且很难刷新该表。
您想要一个只包含当前用户所关注的所有用户的表吗?你的追随者表应该使用指针而不是对象id,然后你可以在查询上使用includeKeys
方法来获取following
对象的Followers
字段,并查找所有对象follower
等于当前用户。
使用ID,您可以使用Followers
查询来执行matchesKeyInQuery方法,其中follower
等于当前用户的ID,而User查询具有matchesKeyInQuery,其中键是objectId,queryKey是跟随,查询是追随者查询。但指针是连接表的正确方法,而不是存储ID。
您还可以查看“关系”,这可能非常适合跟踪您关注的用户。