我目前有一个查询,它返回我在服务器上拥有的所有用户的表,如果我按照他们的名字返回其名称旁边的复选标记。这是代码:
//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()
}
})
}
我正在尝试返回一个只包含我跟随的用户的表,但是我似乎无法让它工作,因为我的Followers类不在PFUser类中,因此很难在用户名中添加用户名和用户ID。追随者的课程。
My Followers类有四列,跟随者和后面的列,每个用户的相应用户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个表格
嵌套查询和表重新加载,你所拥有的是非常低效的......一旦你获得了相当多的用户,你就会执行太多的查询并且很难刷新该表。
您想要一个只包含当前用户所关注的所有用户的表吗?你的追随者表应该使用指针而不是对象id,然后你可以在查询上使用includeKeys
方法来获取following
对象的Followers
字段,并找到follower
等于当前用户的所有对象。
使用这些ID,您可以使用Followers
查询来执行matchesKeyInQuery方法,其中follower
等于当前用户的ID,User查询具有matchesKeyInQuery,其中键是objectId,queryKey是跟随,查询是Follower查询。但指针是连接表的正确方法,而不是存储ID。
您还可以查看“关系”,这可能非常适合跟踪您关注的用户。