【问题标题】:Only show friends posts on Parse仅在 Parse 上显示朋友的帖子
【发布时间】:2016-05-03 03:32:38
【问题描述】:

尝试学习 Swift 的新程序员,我正在尝试将我的应用程序设置为仅显示当前用户在解析照片共享数据库上的帖子。这里的第一种方法理论上应该将当前用户添加到“followingWho”数组中。

override func viewDidLoad() {
    super.viewDidLoad()

    let userQuery = PFUser.query()
    userQuery?.whereKey("username", equalTo: PFUser.currentUser()!.username!)
    userQuery?.findObjectsInBackgroundWithBlock ({
        (objects: [PFObject]?, error: NSError?) -> Void in


        if error == nil {
            //no error
            if let objects = objects {
                for object in objects {
                    let followingWho = object["followingWho"] as! NSArray!
                    self.loadData(followingWho)
                }
            }

        } else {
            //error 
            NSLog("Error")
        }
    })


    self.tableView.reloadData()

}

那么我在这里的第二种方法应该显示帖子并过滤掉除当前用户之外的所有用户

func loadData(followingWho: NSArray) {

    let query = PFQuery(className: "Posts")
    query.whereKey("addedBy", containedIn: followingWho as! [PFObject])
    query.orderByDescending("createdAt")
    query.findObjectsInBackgroundWithBlock {
        (posts: [PFObject]?, error: NSError?)  -> Void in


        if (error == nil) {
            //No error

            //let posts = posts as! [PFObject]

            if let posts = posts {
                for post in posts {
                    self.images.append(post["Image"] as! PFFile)
                    self.imageCaptions.append(post["Caption"] as! String)
                    self.imageDates.append(post["date"] as! String)
                    self.imageUsers.append(post["addedby"] as! String)
                }

                self.tableView.reloadData()
            }

        } else {
            //error
            NSLog("Error")
        }

    }

}

但似乎没有任何效果。代码编译并运行,但似乎只拉出一个空白屏幕,没有加载任何帖子。

【问题讨论】:

  • 仅供参考 - Parse.com 将在几个月后关闭。您应该找到其他服务。
  • 我知道我只是在学习它,因为我知道如何设置它并且它是一个简单的数据库服务

标签: ios swift parse-platform instagram


【解决方案1】:

可能是问题,虽然如果不是问题,那肯定是一个问题:您正在尝试更新来自后台线程的 UI。 findObjectsInBackgroundWithBlock 在后台调用它的完成块,从后台更新 UI 是一个很大的禁忌。相反,在主线程上调用你的 UI 更新:

dispatch_async(dispatch_get_main_queue(), {
    //Do your UI updates here
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多