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

标签 ios uitableview swift parse-platform pfquery

我正在使用 parse.com 制作待办事项应用程序。我有一个用户设置的数据,他们也应该能够将该数据分配给另一个用户。因此,用户设置标题、文本和他们希望将其分配给的用户的姓名。所有这些都存储在数据库中并且运行良好。当同一用户登录时,他们设置的数据会显示在 TableView Controller 中。

但是,他们指定查看数据的用户不会显示。所以让我用代码来解释。下面的代码允许用户在进入表格 View 屏幕时查看他们设置的数据。下面的代码在 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 设置数据时,当他登录并转到 TableView 时,它会出现在他面前,但即使当他分配给(例如)UserTwo 并且 UserTwo 登录并转到 TableView 时,数据也会出现本来就是,我只是不知道该怎么做??!

请帮助我或给我指导,我仍在寻找解决方案,我觉得它真的很简单,但我不能指手画脚。

更新 *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 就不会相互删除,因为它几乎就像一个刷新按钮,然后所有数据都会从屏幕上删除。

最佳答案

我一直在处理类似的问题,但是使用来自 parse 的推送通知。今天晚些时候我可以提供代码示例。有几种方法可以解决。当用户创建一个新的待办事项时,您可以为他们要分配给的用户设置一个自定义对象,您可以根据字段进行查询。您可以使用 saveinbackground 和 block 来保存待办事项。另一种方法是使用 PFRelation。观看了一些关于 team tree house 的类(class),以回顾和了解不同的技术,他们有一个是自毁消息传递应用程序,它使用解析功能来实现与您想要执行的操作非常相似的功能。

关于ios - Parse.com 多个用户访问数据 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28906417/

相关文章:

ios - 自定义UITableViewCell无法设置选中背景色

ios - 如何确保我的数组结构在 Objective-C 和 Swift 中相同?

ios - 如何使用外键从两个表中获取记录

objective-c - 使用 performSelectorInBackground 的风险?

android - iOS中Google Play服务的单个 'activity'

ios - 如何覆盖tableView :titleForHeaderInSection: to adjust section headers of static UITableViews?

iphone - 如何从另一个 View Controller 访问一个 View Controller 中的变量?

iOS 将捕获的图像保存到内存并访问它们

iOS - 如何对深层链接进行单元测试以确保它们可以在应用程序端进行处理

iphone - 存储和检索数据