Parse.com某些列未在segue上更新



我正在尝试更新解析中的一些列。这里,只有gotpromoCode在segue之前得到更新。但如果我从下一个视图控制器返回,在同一个按钮上再次调用click函数,并更新其他列promoCode and senderUserId。我设置了断点,并看到用于更新列的代码在segue之前为这两列调用,但第一次它们仍然没有得到更新。

 var promoCode = ""
//if promocode is nil
if ((self.currentUser["promoCode"]) == nil)
{
    let nameString = self.firstname.text!+self.lastname.text!
    PFCloud.callFunctionInBackground("createPromoCode", withParameters: ["nameString" : nameString]){ response, error in
        if let error = error {
            print (error)
        }
        else {
            print("Invite sent")
            print("the invitation code is: (String(response!))")
            promoCode = String(response!)
            PFUser.currentUser()!.setValue(promoCode, forKey: "promoCode")
        }
    }
}
//validating promo code
if ( self.promocodeText.text?.isEmpty == false )// && PFUser.currentUser()!["gotpromoCode"] == nil )
{
    var query1 = PFQuery(className:"_User")
    query1.whereKey("promoCode", equalTo:self.promocodeText.text!)
    query1.findObjectsInBackgroundWithBlock {
        (objects: [PFObject]?, error: NSError?) -> Void in
        if error == nil {
            PFUser.currentUser()!.setValue(self.promocodeText.text, forKey: "gotpromoCode")
            // The find succeeded.
            print("Successfully retrieved (objects!.count) scores.")
            // Do something with the found objects
            if let objects = objects {
                for object in objects {
                    print(object.objectId)
                    // self.senderUserId = object.objectId!
                    PFUser.currentUser()!.setValue(object.objectId!, forKey: "senderUserId")
                    print("senderUserId is: (object.objectId!)")
                }
            }

        } else {
            // Log details of the failure
            print("Error: (error!) (error!.userInfo)")
            self.displayAlert("Error!", body: "Promo Code does not exists")
        }
    }
}

PFUser.currentUser()!.saveInBackgroundWithBlock {
    (success: Bool, error: NSError?) -> Void in
    if (success) {
        self.performSegueWithIdentifier(self.goToAccount, sender: self)
    } else {
        // There was a problem, check error.description
    }
}

我已经检查了断点中的值,不知道为什么会发生这种情况。

我通过在设置值后保存结果来解决这个问题。

  PFUser.currentUser()!.saveInBackground()

所以我用这个像

PFUser.currentUser()!.setValue(object.objectId!, forKey: "senderUserId")
 PFUser.currentUser()!.saveInBackground()

类似地,promoCode也起了作用。

最新更新