说我有一个正在编辑的PFObject。在稍后的阶段,我希望取消对PFObject所做的更改。如何还原为PFObject的原始副本?
我尝试过的
if (self.request.isDirty) { // self.request is a PFObject
// Reload object
NSLog(@"%@", self.request.requestTitle); // Logs ABC, Original was DEF
[self.request refreshInBackgroundWithBlock:^(PFObject *object, NSError *error) {
if (!error) {
NSLog(@"%@", self.request.requestTitle); // Logs ABC
[self.requestDetailsTableView reloadData];
}
}];
}
我也尝试获取对象,但结果相同
if (self.request.isDirty) { // self.request is a PFObject
// Reload object
NSLog(@"%@", self.request.requestTitle); // Logs ABC, Original was DEF
[self.request fetchInBackgroundWithBlock:^(PFObject *object, NSError *error) {
if (!error) {
NSLog(@"%@", self.request.requestTitle); // Logs ABC
[self.requestDetailsTableView reloadData];
}
}];
}
最佳答案
现在在PFObject
上有一个还原方法,只要您没有调用save,它就可以将您的对象重设为服务器状态:http://parseplatform.org/Parse-SDK-iOS-OSX/api/Classes/PFObject.html#/c:objc(cs)PFObject(im)revert
例如,我使用带有窗体的推送视图控制器来编辑PFObject子类上的属性,并且我有两个按钮用于“取消”和“保存” ...
@IBAction override func cancelAction() {
self.myObject?.revert()
self.navigationController?.popViewControllerAnimated(true)
}
@IBAction override func saveAction() {
self.myObject?.saveInBackgroundWithBlock({ (succeeded: Bool, error: NSError?) -> Void in
if (succeeded) {
self.navigationController?.popViewControllerAnimated(true)
} else {
// Show error
}
})
}
关于ios - 撤消/将本地更改还原为PFObject,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26576740/