Parse数据库在创建新对象时会替换对象

时间:2016-01-24 00:38:36

标签: ios swift parse-platform

我一直试图找出这个问题一段时间没有成功。我有一个按钮就像这样:

  • 在Parse中查询videosTable类,如果不存在videoID的值(我从youtube的API获得),则创建一个等级为0的新PFObject。否则,将等级提高一。

然而,结果是我每次启动应用程序时尝试创建的第一个新对象没有问题,但是如果我在同一个运行/会话期间创建另一个新对象,则先前创建的对象将被此新替换之一。

objectID保持不变,所以我猜测这与查询没有关闭(或类似的东西)有关,导致我修改前一个对象,而不是创建一个新对象。

有人可以解释一下吗?

@IBAction func recomBtn(sender: AnyObject) {

    let query = PFQuery(className: "VideosInfo")
    query.whereKey("Video_ID", equalTo: videoID)
    query.findObjectsInBackgroundWithBlock {
        (objects: [PFObject]?, error: NSError?) -> Void in

        if error == nil {
            if objects?.count == 0 {
               print(objects)
               videosTable["Video_ID"] = self.videoID
               videosTable["Rating"] = 1
               videosTable.saveInBackgroundWithBlock {
                (success: Bool, error: NSError?) -> Void in
                if (success) {
                    print("Rating Created")
                } else {
                    print(error?.description)
                }}
            } else {
                objects![0].incrementKey("Rating")
                print("Rating Increased")
                videosTable.saveInBackground()
                }} else {
                print(error?.description)
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

经过多次审查,我发现我犯了一个非常愚蠢的错误!我在函数之外声明了PFObject!所以当我完成按钮时,PFObject仍然存在! (因为在我转到另一个视频后我并没有真正关闭视图,所以在我关闭应用程序之前,PFObject仍然是该类的属性。)

非常感谢您的帮助!