【问题标题】:Struggling to append arrays across Parse classes努力在 Parse 类中追加数组
【发布时间】:2016-04-21 15:17:01
【问题描述】:

大家好,我正在尝试构建一个简单的滑动应用来喜欢和不喜欢上传的照片。我正在努力以我希望的方式将喜欢/不喜欢添加到 Parse 中。到目前为止,我已经尝试了两种方法:

  • 将发布的图片的 objectId 添加到喜欢/不喜欢它的用户,但问题是数组中只显示了一个 objectId。
  • 留在图片发布到的 Parse 类中(Post),将喜欢/不喜欢的用户 ID 添加到图片中。这根本不会发生,每次喜欢/不喜欢图像时都会使用新的 objectId 创建新行。

理想情况下,我希望将喜欢/不喜欢照片的用户放在一个数组中,以便稍后查询。我对 Parse 不是很了解,这是我第一次使用它,因此我们将不胜感激。

这是我在滑动图像时使用的代码(添加到 Post 类):

       if gesture.state == UIGestureRecognizerState.Ended {

        var likedOrDisliked = ""

        if label.center.x < 100 {

            print("Dislike")
            likedOrDisliked = "disliked"

        } else if label.center.x > self.view.bounds.width - 100 {

            print("Like")
            likedOrDisliked = "liked"

        }

        if likedOrDisliked != ""{

            var post = PFObject(className: "Post")

            post.addUniqueObjectsFromArray([(PFUser.currentUser()?.objectId!)!], forKey: likedOrDisliked)
            post.saveInBackground()


        }

这是我尝试添加到用户类时的 sn-p:

PFUser.currentUser()?.addUniqueObjectsFromArray([displayedUserID], forKey: likedOrDisliked)
            do {

                try PFUser.currentUser()?.save()

            } catch {

            }

这是仪表板中发生的情况, new rows created

【问题讨论】:

    标签: ios swift parse-platform


    【解决方案1】:

    你想要的是用喜欢/不喜欢的用户更新实际的帖子

    • 创建一个帖子(这部分您没有解释,但我展示了一个简单的假设 - 伪代码)
    var post = PFObject(class:"Post")
    post["image"] = PFFile(image)
    post.save()
    
    • 接下来,您通过从帖子中获取图像来在屏幕上显示图像 当用户不喜欢/喜欢时

      您将当前的 PFUser 添加到喜欢/不喜欢的列并保存该对象。

    let arrayMut = NSMutableArray()
    var array = NSArray()
    if let arrayData = post.objectForKey("likedUser") as? NSArray {
        array  =  arrayData
    }
    

    现在循环遍历数组以查找当前用户是否存在.. 如果找不到.. 添加当前 PFUser

    arrayMut.addObject(PFUser.currentUser().objectId);
    post.setObject(arrayMut, forKey: "likedUser")
    post.save()
    

    【讨论】:

    • 我已经尝试了各种方法,而且我到处都是 Parse 代码,恐怕我无法让它工作,我应该发布所有代码吗?我只是无法更新喜欢或不喜欢的字段中的现有对象
    【解决方案2】:

    我尝试了很多东西,最终卡住了,通过(将当前用户添加到喜欢或不喜欢的字段)达到了预期的效果:

                if likedOrDisliked != ""{
    
                var post = PFQuery(className: "Post")
    
    
                post.findObjectsInBackgroundWithBlock({ (objects: [PFObject]?, error: NSError?) -> Void in
    
                    if error == nil {
                        if let objects = objects {
                            for object in objects {
                                var objId = object["objectId"]
                                var query = PFQuery(className: "Post")
    
                                query.findObjectsInBackgroundWithBlock({ (objects, error) -> Void in
    
                                    if error == nil {
    
                                        object.addUniqueObjectsFromArray([(PFUser.currentUser()?.objectId)!], forKey: likedOrDisliked)
    
                                        object.saveInBackground()
    
                                    }
    
                                })
                            }
                        }
                    }
    
                })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-07
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      • 2022-01-05
      相关资源
      最近更新 更多