Swift 为我关注的用户解析查询
Swift Parse Query For Users That I Follow
我目前有一个查询,return是我服务器上所有用户的 table,如果我关注他们,他们的名字旁边会有一个复选标记。这是代码:
//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()
}
})
}
我正在尝试 return 一个 table 只有我关注的用户,但是我似乎无法让它工作,因为我的关注者 class 不在PFUser class,因此很难在 Follower class 中附加用户的用户名和用户 ID。
My Followers class 有四列,follower 和 following 是每个用户各自的用户 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()
}
}
}
}
}
})
}
这是我的两张桌子
userPost Table
Follower Table
你所拥有的嵌套查询和 table 重新加载的效率低得离谱......一旦你获得了相当数量的用户,你就会执行太多查询并达到 table努力刷新。
您想要 table 只包含您当前用户关注的所有用户吗?你的 Followers table 应该使用指针而不是对象 ID,然后你可以在查询中使用 includeKeys
方法让它获取 Followers
对象的 following
字段,并且查找 follower
等于当前用户的所有对象。
有了 ID,您可以使用 matchesKeyInQuery 方法,使用 Followers
查询,其中 follower
等于当前用户的 ID,用户查询具有 matchesKeyInQuery,其中键是 objectId ,queryKey为following,query为Follower查询。但是指针是连接 table 的正确方法,而不是存储 ID。
您还可以查看“关系”,它可能非常适合跟踪您关注的用户。
我目前有一个查询,return是我服务器上所有用户的 table,如果我关注他们,他们的名字旁边会有一个复选标记。这是代码:
//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()
}
})
}
我正在尝试 return 一个 table 只有我关注的用户,但是我似乎无法让它工作,因为我的关注者 class 不在PFUser class,因此很难在 Follower class 中附加用户的用户名和用户 ID。
My Followers class 有四列,follower 和 following 是每个用户各自的用户 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()
}
}
}
}
}
})
}
这是我的两张桌子
userPost Table
Follower Table
你所拥有的嵌套查询和 table 重新加载的效率低得离谱......一旦你获得了相当数量的用户,你就会执行太多查询并达到 table努力刷新。
您想要 table 只包含您当前用户关注的所有用户吗?你的 Followers table 应该使用指针而不是对象 ID,然后你可以在查询中使用 includeKeys
方法让它获取 Followers
对象的 following
字段,并且查找 follower
等于当前用户的所有对象。
有了 ID,您可以使用 matchesKeyInQuery 方法,使用 Followers
查询,其中 follower
等于当前用户的 ID,用户查询具有 matchesKeyInQuery,其中键是 objectId ,queryKey为following,query为Follower查询。但是指针是连接 table 的正确方法,而不是存储 ID。
您还可以查看“关系”,它可能非常适合跟踪您关注的用户。