6

我试图在解析中了解 PFRelation。我有一个名为“girlBio”的类存储有关女孩的信息,还有一个名为“stuff”的类存储有关项目的信息。下面的代码:

PFObject *item = [PFObject objectWithClassName:@"stuff"];
item[@"Name"] = @"PS3";
PFObject *girl = [PFObject objectWithClassName:@"girlBio"];
girl[@"Name"] = @"Jessica";
PFObject *girl2 = [PFObject objectWithClassName:@"girlBio"];
girl2[@"Name"] = @"Cindy";

PFRelation *relation = [item relationForKey:@"owners"];
[relation addObject:girl];
[relation addObject:girl2];
[item saveInBackground];

--------------------------------- 更新也试过这个 ------------- ------------

PFObject *item = [PFObject objectWithClassName:@"stuff"];
item[@"Name"] = @"PS3";
PFObject *girl = [PFObject objectWithClassName:@"girlBio"];
girl[@"Name"] = @"Jessica";
[item saveInBackground];
[girl saveInBackground];
PFRelation *relation = [item relationForKey:@"owners"];
[relation addObject:girl];
[item saveInBackground];

所以我希望这个项目由几个女孩拥有但是当我运行程序时我得到这个错误:

错误:无法添加指向关系的非指针(代码:111,版本:1.6.0)

有人可以帮忙吗?

谢谢

4

1 回答 1

8

您需要先保存对象girl1girl2然后再保存关系。否则,即使您的本地副本知道它们,服务器也不知道。

更新

在保存关系之前,您还需要确保保存girl1和完成。但是,您可能不想在主线程上运行这些保存,所以我推荐这样的东西(我刚刚运行没有问题):girl2item

dispatch_async(dispatch_get_main_queue(), ^{
    PFObject *item = [PFObject objectWithClassName:@"stuff"];
    item[@"Name"] = @"PS3";
    PFObject *girl = [PFObject objectWithClassName:@"girlBio"];
    girl[@"Name"] = @"Jessica";
    [item save];
    [girl save];
    PFRelation *relation = [item relationForKey:@"owners"];
    [relation addObject:girl];
    [item saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
        //Do something after the last save...
    }];
});
于 2014-12-19T17:04:39.950 回答