使用 Parse 在 iOS Swift 中更新对象
Posted
技术标签:
【中文标题】使用 Parse 在 iOS Swift 中更新对象【英文标题】:Updating Objects in iOS Swift with Parse 【发布时间】: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")
【问题讨论】:
【参考方案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()
【讨论】:
以上是关于使用 Parse 在 iOS Swift 中更新对象的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS9 和 Swift2 中使用 Parse 登录 Facebook
在 Swift (iOS) 中使用水平滑动浏览 Parse.com 中的数据
UITableView 中的单元格在 iOS 中选择之前不会更新(swift)