说我有一个正在编辑的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/

10-09 16:29