使用 Parse 在 _User class 中保存 "followers" 列表

Save "followers" list in _User class using Parse

我正在尝试这个,每当我点击关注按钮时,它都会在 table 视图中运行此代码。

@IBAction func followButtonTapped(sender: UIButton){



    sender.setTitle("unfollow", forState: UIControlState.Normal)

    var followers:PFQuery = PFQuery(className: "_User")
    followers.getObjectInBackgroundWithId(userIds[sender.tag], block: { (objects:PFObject?, error:NSError?) -> Void in

        if error != nil {


        } else if let object = objects {

            object.addUniqueObject(PFUser.currentUser()!.objectId!, forKey: "followers")

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

                if error != nil {


                } else {

                    println("saved")
                }


            })


        }




    })



}

我收到这个错误:

Error]: Caught "NSInternalInconsistencyException" with reason "User cannot be saved unless they have been authenticated via logIn or signUp"

我知道这是因为我们无法更新 _User class 直到用户被更新为当前用户..所以我想保存用户的所有关注者_User class.. 有可能吗??

您确定列跟随器是一个数组以便您可以向其添加值吗? 顺便说一下,因为你已经先检查它是否有错误,如果你发现了就打印它。

println("Found an error: \(error!.description)")

编辑:

好了,现在我知道你打算做什么了。将当前用户添加到其他用户的关注者列。

  1. 您可以将 ACL public 保存到 Write 并继续此操作,但这并不是很安全。
  2. 或者您可以创建另一个 class "Follow",您可以在其中指定关注 "fromUser column" 和关注 "toUser column" 的人,两者都指向 _User,这样您就可以当您想取消关注时,甚至可以跟踪关注关系。这种方式使您的工作更轻松。

要获得某人的所有关注者:

let followers = PFQuery(class: "Follow")
followers.whereKey("toUser", equalTo: PFUser.currentUser()!)

要创建、删除和编辑这些关系,请使用具有正确 whereKeys 的 PFQuery。提示:使用

followers.includeKey("_User")

因此,如果您愿意使用关注者数据(例如在 table 视图中显示的姓名),您可以获取指针并保存服务器请求。

不应像这样使用 Parse Users class,您需要创建 class 的抽象并使用它来代替。