解析 - 保存相关对象

时间:2014-05-14 10:04:24

标签: ios objective-c parse-platform

我在我的项目中使用Parse作为后端。

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

现在,这样做是否有必要单独保存孩子?文件等同样......

第一个示例 - 将头像添加到用户对象

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

好的,所以在设备上我可以引用用户的@"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对象之前检查它是否有效?

2 个答案:

答案 0 :(得分:3)

只要父母和孩子之间的关系是指针,你就不必先保存孩子。 PFRelation的工作方式不同,但父对象的保存也会保存与指针相关的子节点。 Cloud Code就是如此,我很确定它也适用于该设备。

此答案中的一些细节:https://www.parse.com/questions/cloud-code-efficient-hierarchy-saving

答案 1 :(得分: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了解更多