【问题标题】:Updating Objects in iOS Swift with Parse使用 Parse 在 iOS Swift 中更新对象
【发布时间】:2015-06-02 09:27:02
【问题描述】:

我有一个表“首选项”,其中用户首选项与用户名一起保存。我创建了这个方法来更新当前用户的偏好,但不知何故它似乎不起作用。我不确定是否需要“prefQuery.getObjectInBackgroundWithId(object.objectId)”部分。

我是 Parse 的新手,谁能帮我指出可能是什么问题。

func userPreferences(){
    var currUser = PFUser.currentUser()
    var prefQuery = PFQuery(className: "preferences")
    var prefObj = PFObject(className: "preferences")

    if let currUserName = PFUser.currentUser()?.username {
        prefQuery.whereKey("username", equalTo: currUserName)
    }

    prefQuery.findObjectsInBackgroundWithBlock {
        (objects: [AnyObject]?, error: NSError?) -> Void in

        if error == nil {
            if let objects = objects as? [PFObject] {
                for object in objects {

                    prefQuery.getObjectInBackgroundWithId(object.objectId){
                        (object: PFObject?, error: NSError?) -> Void in
                        if error == nil || object != nil {
                            prefObj["agestart"] = self.fromAge.text
                            prefObj["ageend"] = self.toAge.text
                            prefObj["location"] = self.location.text
                            ProgressHUD.showSuccess("Update successful")
                        } else {
                            ProgressHUD.showError("Update failed")
                        }
                    }
                }
            }
        }
    }
}

【问题讨论】:

    标签: ios swift parse-platform


    【解决方案1】:

    我发现了问题并更新了我的代码。工作代码如下;问题在于“prefObj [”agestart“]”代码块,我使用了错误的查询实例。你可以比较两个sn-ps:

    func userPreferences(){
        var currUser = PFUser.currentUser()
        var prefQuery = PFQuery(className: "preferences")
        var prefObj = PFObject(className: "preferences")
    
        if let currUserName = PFUser.currentUser()?.username {
            prefQuery.whereKey("username", equalTo: currUserName)
        }
    
        prefQuery.findObjectsInBackgroundWithBlock {
            (objects: [AnyObject]?, error: NSError?) -> Void in
    
            if error == nil {
                if let objects = objects as? [PFObject] {
                    for object in objects {
                        prefQuery.getObjectInBackgroundWithId(object.objectId){
                            (prefObj: PFObject?, error: NSError?) -> Void in
                            if error != nil {
                                println(error)
                                ProgressHUD.showSuccess("Error while updating")
                            } else if let prefObj = prefObj {
                                prefObj["agestart"] = self.fromAge.text
                                prefObj["ageend"] = self.toAge.text
                                prefObj["location"] = self.location.text
                                    ProgressHUD.showSuccess("Update successful")
                                prefObj.saveInBackgroundWithBlock({ (Bool, error: NSError!) -> Void in })
                            }
                        }
                    }
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      最大限度地减少代码的最佳方法,您可以在下面看到:

      func userPreferences() {
      
              let prefQuery = PFQuery(className: "preferences")
              if let currUserName = PFUser.current()?.username {
                  prefQuery.whereKey("username", equalTo: currUserName)
              }
      
              prefQuery.findObjectsInBackground {
                  (objects, error)  in
      
                  if error == nil {
                      if let objects = objects {
                          for object in objects {
                                      object["agestart"] = "ur value"
                                      object["ageend"] = "ur value"
                                      object["location"] = "ur value"
                                      print("Update successful")
                                      object.saveInBackground()
                          
                      }
                  }
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多