2015-06-03 54 views
0

我有一個名爲X的PFObject子類,並且我希望僅在我編輯其屬性時完成將其發送到雲用戶可能會在完成編輯其屬性之前退出應用程序,因此X不應發送到雲端。編輯PFRelation未保存的PFObject

X包含一個PFRelation(多對多)Y(也是PFObject的子類)。 我創建了一個UIViewController,讓用戶編輯這個關係。 在viewDidLoad中我試圖讓伊蘇流出X:

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

    }]; 

但解析總是抱怨「試過保存的對象與一個新的,未保存的孩子。」首先,讓我們先說這個剪輯不應該保存任何內容,所以我不確定爲什麼Parse抱怨保存。其次,我足夠了解PFRelation只適用於保存的對象。但是我真的不想在用戶完成之前將X發送到雲端。我在這裏做的是當用戶完成對象並按下「保存」時,x對象應該在線發送。我有什麼替代方案可以做到這一點?

非常感謝您的閱讀。

回答

0

也許你應該在viewWillDisappear中使用NSUserdefault,並在本地保存該對象。並有保存在按鈕保存功能解析。要保存: NSString * valueToSave = @「someValue」; [[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@「preferenceName」]; [[NSUserDefaults standardUserDefaults] synchronize];

並加載:

的NSString * savedValue的= [[NSUserDefaults的standardUserDefaults] stringForKey:@ 「preferenceName」];

希望這有助於! :)

+0

當然,我可以將Ys分別保存在一個數組中,但我想要這麼做,所以我可以將PFObject保存在一個保存方法中。如果我將Ys分別保存在內存中,則必須將PFObject保存兩次。首先,我可以改變PFRelation(因爲在保存之前不允許我),然後再保存一次以保存新的關係。我覺得這很乏味,想要一個更好的解決方案。謝謝:) –

0

即使您的關係對象與其他「父」對象關聯,您仍然可以單獨處理它。這是我會做的:

  1. 創建您的X對象。無論何時,只要你準備好了就保存它,因爲它應該屬於它自己的Parse類。
  2. saveInBackground塊你X的對象,點Y到並保存Y.

下面是斯威夫特的例子(對不起,我停止使用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{ 
     //... 
    } 
    } 
} 
+0

我不明白爲什麼剪斷我連接崩潰。解析抱怨我試圖用一個未保存的孩子保存一個對象,但我沒有寫任何保存命令。將對象添加到關係而無需首先將它們上傳到雲中是否真的不可能? –