我有两个班级:
@interface RMEvent : PFObject <PFSubclassing>
@property (nonatomic, strong) NSArray *attachments;
和
@interface RMFile : PFObject <PFSubclassing>
@property (nonatomic, strong) PFObject *event;
我这样做:
RMEvent *newEvent = [RMEvent object];
[newEvent pinInBackground];
RMFile *newFile = [RMFile object];
newFile.event = newEvent;
[newFile pinInBackground];
[newEvent addObject:newFile forKey:@"attachments"];
我可以在本地看到对象(通过查询localDatabase进行测试)。一切似乎都没问题。 但后来我做了(有很多不同的组合):
[newEvent saveEventually];
[newFile saveEventually];
我在服务器上看不到任何内容。 如何将这些对象保存到服务器?什么是正确的顺序或者我一般做错了什么?
P.S。:我在每个子类'+ load方法中都有[self registerSubclass],我在RMEvent的+ object方法中实例化一个数组,所以不应该这样。
答案 0 :(得分:1)
您应该检查saveEventually回调是否有错误
[newFile saveEventually:^(BOOL success, NSError *error) {
if (error) NSLog(error);
}];
RMFile是PFFile的子类吗?如果是这样,你无法保存最终的PFFile,并且无法保存作为指向新的未保存PFfile的指针的对象
编辑: “保存时发现了循环依赖”
没有云代码:
RMEvent *newEvent = [RMEvent object];
RMFile * newFile = [RMFile object];
newEvent[@"newFile"] = newFile;
[newEvent saveInBackgroundWithBlock:^(BOOL success, NSError *error)
{
if(!error)
{
newFile[@"newEvent"] = newEvent;
[newFile saveEventually];
}
}];
使用CloudCode:
RMEvent *newEvent = [RMEvent object];
RMFile * newFile = [RMFile object];
newEvent[@"newFile"] = newFile;
[newEvent saveInBackground];
然后在CloudCode afterSave trigger上,你可以检索你的RMEvent,从中获取'newFile'键,在newFile对象上指定一个指向newEvent的指针,然后保存newFile