【问题标题】:PFRelation addObject does not add relationPFRelation addObject 不添加关系
【发布时间】:2015-02-04 22:22:40
【问题描述】:

我正在尝试将对象添加到 Parse 中的关系中,尽管代码在没有任何错误的情况下执行,但关系没有出现在后端,因此没有保存对象。

PFObject *newContact = [PFObject objectWithClassName:@"Contact"];

[newContact saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    PFQuery *query = [PFQuery queryWithClassName:@"Trip"];
    PFObject *trip = [query getObjectWithId:self.parseID];

    PFRelation *rel = [trip relationForKey:@"contacts"];
    [rel addObject:newContact];

    contact.parseID = newContact.objectId;
}];

我还检查了PFObject trip 是否正确,并且我返回了具有相应 ID 的所需对象。此外,密钥contacts 也经过双重检查并正确无误。

【问题讨论】:

  • 你永远不会保存关系......你的代码在某种意义上有点颠倒......我会输入一个答案来解释。

标签: ios parse-platform pfobject pfrelation


【解决方案1】:

问题是您永远不会保存关系。您在块中创建PFRelation,向其中添加一个对象,然后什么也不做……您永远不会保存它。

相反,尝试获取trip 对象并在保存块的外部创建PFRelation,例如:

PFQuery *query = [PFQuery queryWithClassName:@"Trip"];
PFObject *trip = [query getObjectWithId:self.parseID];

PFObject *newContact = [PFObject objectWithClassName:@"Contact"];

PFRelation *rel = [trip relationForKey:@"contacts"];
[rel addObject:newContact];

[newContact saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    contact.parseID = newContact.objectId;
}];

【讨论】:

  • 非常感谢您指出我的愚蠢错误!我刚刚在块内添加了[trip saveInBackground] 行,所以我不必对trip 同步进行查询。
猜你喜欢
  • 2023-03-12
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-21
相关资源
最近更新 更多