PFObject子类化与关系

时间:2015-06-11 15:01:39

标签: ios parse-platform

我有两个班级:

@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方法中实例化一个数组,所以不应该这样。

1 个答案:

答案 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