【问题标题】:Parse.com some columns not updated on segueParse.com 的某些列未在 segue 上更新
【发布时间】:2015-12-06 09:20:15
【问题描述】:

我正在尝试更新解析中的几列。在这里,只有 gotpromoCode 在 segue 之前更新。但是如果我从下一个视图控制器回来,在同一个按钮上单击函数会再次被调用,并且其他列 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
    }
}

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

【问题讨论】:

  • 这段代码是否都在同一个函数中?
  • 在第一种情况下,您是通过云代码在后台创建促销代码,但后来您将用户保存在该完成块之外,
  • 请提供全班代码。

标签: ios iphone swift parse-platform


【解决方案1】:

我通过设置值后保存结果来解决它。

  PFUser.currentUser()!.saveInBackground()

所以我就这样用了

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

对于 promoCode 类似,然后它起作用了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多