Parse.com多个用户访问数据 - Swift

时间:2015-03-06 19:43:20

标签: ios uitableview swift parse-platform pfquery

我正在使用parse.com制作应用程序。我有数据由用户设置,他们也应该能够将该数据分配给另一个用户。因此,用户设置标题,文本以及他们希望将其分配给的用户的名称。所有这些都存储在数据库中并且运行良好。当同一用户登录时,在表视图控制器中为他显示他们设置的数据。

但是,他们分配用于查看数据的用户不会显示。所以让我用代码解释一下。下面的代码允许用户在进入表格视图屏幕时查看他们设置的数据。下面的代码位于viewDidAppear函数中。

    func fetchAllObjectsFromLocalDatastore() {

    var query: PFQuery = PFQuery(className: "toDo")

    query.fromLocalDatastore()

    query.whereKey("username", equalTo: PFUser.currentUser().username)

    query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in

        if (error == nil) {

            var temp: NSArray = objects as NSArray

            self.toDoObjects = temp.mutableCopy() as NSMutableArray

            self.tableView.reloadData()

        }else {

            println(error.userInfo)

        }

    }

有了这个,我还有另一个功能:

    func fetchAllObjects() {


    PFObject.unpinAllObjectsInBackgroundWithBlock(nil)

    var query: PFQuery = PFQuery(className: "toDo")

    query.whereKey("username", equalTo: PFUser.currentUser().username)


    query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in

        if (error == nil) {

            PFObject.pinAllInBackground(objects, block: nil)

            self.fetchAllObjectsFromLocalDatastore()


        }else {


            println(error.userInfo)

        }            

    }

}

他希望看到数据的用户在添加新待办事项屏幕中分配并且有效。它甚至显示在Parse.com数据库中。但是我如何查询它或者让它为分配了数据的用户显示数据而不仅仅是设置它的用户。

因此,当(例如)UserOne设置数据时,当他登录并进入表视图时会显示给他,但即使他分配给(例如)UserTwo和UserTwo登录并转到表视图中的数据本来应该是,我只是不知道怎么办?!

请帮助我或给我指导,我仍在寻找解决方案,我觉得这很简单,但我不能把手指放在上面。

更新* 2

设置数据后,会设置UserOne想要访问数据的人。

所以这是我想的保存过程:

    @IBAction func saveAction(sender: UIBarButtonItem) {

    self.object["username"] = PFUser.currentUser().username
    self.object["title"] = self.titleField?.text
    self.object["text"] = self.textView?.text
    self.object["forUser"] = self.userToAssignTo?.text


    self.object.saveEventually { (success, error) -> Void in

        if (error == nil) {




        }else{


            println(error.userInfo)

        }

    }

然后我尝试查询forUser:

    func fetchAllObjects() {


    PFObject.unpinAllObjectsInBackgroundWithBlock(nil)

    var query: PFQuery = PFQuery(className: "toDo")

    query.whereKey("forUser", equalTo: PFUser.currentUser().username)


    query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in

        if (error == nil) {

            PFObject.pinAllInBackground(objects, block: nil)

            self.fetchAllObjectsFromLocalDatastore()


        }else {


            println(error.userInfo)

        }            

    }

}

这仍然似乎不起作用。我不确定我现在在做什么!该死的我只是不知道如何让其他用户看到一个用户设置的数据。

更新3 **

我找到了!这完全是关于viewDidAppear函数,所以这里是代码:

    override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    if (PFUser.currentUser() == nil) {

        var logInViewController = PFLogInViewController()

        logInViewController.delegate = self

        var signUpViewController = PFSignUpViewController()

        signUpViewController.delegate = self

        logInViewController.signUpController = signUpViewController

        self.presentViewController(logInViewController, animated: true, completion: nil)

    }else {

        //self.fetchAllObjectsFromLocalDatastore()
        //self.fetchAllObjects()

        self.fetchAllObjectsFromLocalDatastore2()
        self.fetchAllObjects2()
    }

}

这基本上是因为fetchAllObjects正在为" forUser"键。但现在我需要弄清楚如何做到这一点,以便fetchAllObjects不会互相擦除,因为它几乎像一个刷新按钮,然后所有数据都从屏幕上擦除。

1 个答案:

答案 0 :(得分:0)

我一直在处理类似的问题,但是来自解析的推送通知。我今天晚些时候可以提供代码示例。有几种方法可以接近。当用户创建新事件时,您可以使用要分配给的用户设置自定义对象,并且可以根据该字段进行查询。您可以使用block保存与saveinbackground相关的操作。另一种方法是使用PFRelation。观看团队树屋的一些课程,以查看和查看不同的技术,他们有一个自毁消息传递应用程序,使用解析功能非常类似于您想要做的。