ios - 将查询的对象组合成一个数组。代码找到关注的用户然后他们的帖子,它分别返回每个用户的帖子,如何组合?

标签 ios swift parse-platform

下面的代码查询“followers”以查看用户是否正在关注另一个用户,然后如果他们是,则查询“Post”以查找他们正在关注的用户的帖子。当前登录用户正在关注其他 2 个用户,用户 A 和用户 B。A 有 1 个帖子,B 有 2 个帖子。出于某种原因,当我运行下面的第二组代码时,它会单独返回计数。 println 显示单个用户的帖子数。我需要计数是找到的所有帖子的总和。似乎有 2 个帖子数组,因为有 2 个用户被关注。如何组合这两个数组?

var getFollowedUsersQuery = PFQuery(className: "followers")

        getFollowedUsersQuery.whereKey("follower", equalTo: PFUser.currentUser()!.objectId!)

        getFollowedUsersQuery.findObjectsInBackgroundWithBlock { (objectos, error) -> Void in

            if let objectos = objectos {

                for objecto in objectos {

                    var followedUser = objecto["following"] as! String

                    var query = PFQuery(className: "Post")

                    query.whereKey("userId", notEqualTo: currentuser.objectId)

                    query.whereKey("userId", equalTo: followedUser)

                    query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]!, error:NSError!) -> Void in
                        if error == nil {
                            self.postsArray.removeAllObjects()
                            self.postsFound.removeAllObjects()


                            let array:NSMutableArray = NSMutableArray(array: objects)
                            let time = dispatch_time(DISPATCH_TIME_NOW, Int64(2 * Double(NSEC_PER_SEC)))
                            dispatch_after(time, dispatch_get_main_queue() , { () -> Void in
                                fn(array)
                            })

                        } else {
                            println(error.localizedDescription)
                        }

当我运行的时候

self.postsFound.addObjectsFromArray(array as [AnyObject])
self.totalUsers = self.postsFound.count
println("Total Posts found \(self.postsFound.count)")

println 正在返回:

找到的帖子总数 1

找到的帖子总数 2

我希望找到的所有帖子都在 1 个数组中并让 println 返回:

找到的帖子总数 3

最佳答案

从查询的角度来看,最好的选择是只进行 1 次查询,并将您的关注者查询作为该查询的要求。通过这种方式,您将询问其作者是关注用户的所有帖子。与找到所有关注的用户然后找到他们的帖子相比,这是向后看问题。作为复合请求,它更高效并返回单个列表。

请注意,存在限制...内部查询将限制为 1000 个关注者(默认情况下为 100 个),并且您需要添加排序才能从外部查询获取合理的结果。

继续当前的查询设置可以帮助您避免这些查询限制,但您需要自己组织构建单个结果数组。最好在云代码中执行此操作并使用 promise 等待所有请求完成。

恐怕这都是很普遍的,但您需要根据您实际使用这些数据的目的以及您期望拥有的用户数量来决定适当的方法...

关于ios - 将查询的对象组合成一个数组。代码找到关注的用户然后他们的帖子,它分别返回每个用户的帖子,如何组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32556427/

相关文章:

ios - 通过快速创建按顺序检索解析对象

ios - swift 2 : error when try to find with indexOf

iphone - 杀死线程或替代方法

macos - 使用 CGEventTapCreate Swift 中的参数问题

swift - Swift 3 中的 NSCurrentLocaleDidChangeNotification?

ios - 使用 iOS Swift 将指针值保存在 parse.com 中

ios - webview 加载完成后,事件指示器不会停止

ios - 如何取消特定 View 的通知中心视觉效果 (iOS)?

ios - Swift iOS 使用数据库中的数据更新图表

ios - 意外的零窗口(空白黑屏)