编辑未保存的PFObject的PFRelation

时间:2015-06-03 14:09:54

标签: ios parse-platform

我有一个名为X的PFObject子类,我希望只有当我完成编辑其属性时才将其发送到云用户可能会退出在完成编辑其属性之前的应用程序,因此X不应该被发送到云。

X包含对Y的PFRelation(多对多)(也是PFObject的子类)。 我创建了一个UIViewController,让用户可以编辑这种关系。 在viewDidLoad上我尝试从Y中获取Y:

PFQuery *yRelationQuery = [self.x.ys query];
    [yRelationQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

    }];

但是Parse总是抱怨"试图用一个未保存的新孩子保存一个物体。"首先,让我们首先说这个剪切不应该保存任何东西,所以我不确定为什么Parse会抱怨保存。 其次,我读得足以理解PFRelation仅适用于保存的对象。但我真的,真的不想将X发送到云端,直到用户完成它。我在这里尝试做的是当用户完成对象并按下" save"时,应该在线发送x对象。我有什么办法可以做到这一点?

非常感谢你阅读。

2 个答案:

答案 0 :(得分:0)

也许你应该在viewWillDisappear中使用NSUserdefault,并在本地保存对象。并将保存解析按钮保存功能。

保存: NSString * valueToSave = @" someValue&#34 ;; [[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@" preferenceName"]; [[NSUserDefaults standardUserDefaults] synchronize];

加载:

NSString * savedValue = [[NSUserDefaults standardUserDefaults]     stringForKey:@" preferenceName"];

希望这有帮助! :)

答案 1 :(得分:0)

即使您的关系对象与另一个关联对象关联," parent"对象,您仍然可以单独处理它。这就是我要做的事情:

  1. 创建您的X对象。无论何时你都准备好了,因为它应该属于它自己的Parse类。
  2. 在X对象的saveInBackground块中,将Y指向它并保存Y。
  3. 以下是Swift中的一个示例(抱歉,我停止使用Objective-C):

    let X = PFObject(className: "X")
    let Y = PFObject(className: "Y")
    
    X["stuff"] = "value"
    
    //Save X
    X.saveInBackgroundWithBlock{ (success, error) -> Void in
      if success {
        Y["xRelation"] = X
    
        //We know X is ready, so save Y now
        Y.saveInBackgroundWithBlock{
          //...
        }
      }
    }