2014-05-14 116 views
5

我在我的项目中使用Parse作为后端。解析 - 保存相关对象

正如你会想到的那样,数据模型中有很多关系。很多时候我在同一时间创建一个“父”对象及其所有“子”,并将它们全部保存到Parse中。

现在,这样做时是否需要单独保存孩子?同样的文件等等

第一个例子 - 添加头像用户对象

UIImage *image = // image from camera 
NSData *pngData = UIImagePNGRepresentation(image); 
PFFile *imageFile = [PFFile fileWithData:pngData]; 
[[PFUser currentUser] setObject:imageFile forKey:"avatar"]; 

OK,所以在设备上我可以参考用户的@"avatar"键,得到的头像文件。但是,这应该如何保存到Parse?

如果我做...

[[PFUser currentUser] saveInBackground]; 

能够节省加入新的文件吗?或者,我需要先保存文件并等待它成功,然后再将其添加到用户对象中,然后保存用户对象?

第二个例子

创建对象的树...

PFObject *family = [PFObject objectWithClassName:@"Family"]; 
[family setObject:@"Smith" forKey:@"familyName"]; 

PFObject *person1 = [PFObject objectWithClassName:@"Person"]; 
[person1 setObject:@"Bob" forKey:@"name"]; 

PFObject *person2 = [PFObject objectWithClassName:@"Person"]; 
[person2 setObject:@"Alice" forKey:@"name"]; 

PFObject *person3 = [PFObject objectWithClassName:@"Person"]; 
[person3 setObject:@"Chris" forKey:@"name"]; 

[family setObject:@[person1, person2, person3] forKey:@"members"]; 

我将如何拯救这个集合的对象?

我可以只做[family saveInBackground];吗?

或者我必须经过一个过程,先保存每个Person对象并在保存family对象之前检查它是否工作?

回答

0

是,会做...其实有,只要保存内容

Saving an Object to Parse 

– save 
– save: 
– saveInBackground 
– saveInBackgroundWithBlock: 
– saveInBackgroundWithTarget:selector: 
– saveEventually 
– saveEventually: 
Saving Many Objects to Parse 

+ saveAll: 
+ saveAll:error: 
+ saveAllInBackground: 
+ saveAllInBackground:block: 
+ saveAllInBackground:target:selector: 

参考Here更多

+0

谢谢,这是更多的是,虽然节省了家长时,层次结构是否被保存的问题?大多数时候我使用'saveInBackgroundWithBlock:'只是想知道如何单独保存孩子:D – Fogmeister