2014-10-26 67 views
4

說我有一個正在編輯的PFObject。在稍後階段,我希望取消我對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]; 
      } 
     }]; 
    } 
+0

你保存PFObject的任何點? – 2014-10-26 19:35:56

+0

不是。我沒有。已經檢查數據庫以確保。我相信如果數據可用,它會從緩存中獲取它(我相信這應該是fetchIfNeededlike的情況) – 2014-10-26 19:50:22

+0

也許首先嚐試使用clearCachedResult清除該PFObject的PFQuery的緩存結果:http:// parse.com/docs/ios/api/Classes/PFQuery.html#//api/name/clearCachedResult – 2014-10-26 20:39:22

回答

0

目前還不能一個辦法直接做到這一點 - 你需要做一個小花式步法與您的通話:)

試試這個:

if (self.request.isDirty) { // self.request is a PFObject 
    // Reload object 
    NSLog(@"%@", self.request.requestTitle); // Logs ABC, Original was DEF 
    PFQuery *newRequest = [PFQuery queryWithClassName:@"YourClassName"]; 
    //Add your request parameters here... 

    [newRequest getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) { 
     if (!error) 
      self.request = object; 
      NSLog(@"%@", self.request.requestTitle); // Should log DEF 
      [self.requestDetailsTableView reloadData]; 
     } 
    }]; 
} 
+0

我做了一些奇特的事情。但是希望發佈這個問題,希望有些Parse開發人員會絆倒它併爲此做點什麼。並感謝:) – 2014-10-29 21:40:19

+1

啊,那麼你正在尋找這個人:https://twitter.com/parsehector – 2014-10-30 01:04:58

3

現在有許多關於PFObject一個還原法將,只要你有沒有叫你保存對象重置爲服務器狀態: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 
     } 
    }) 
}