Parse.com将数据从一个对象存储到另一个对象

时间:2015-09-02 18:57:41

标签: objective-c parse-platform pfobject pfuser

我使用解析作为后端创建应用,我有三个ClassesUserStudentSchool)。我目前在User类和Student Class之间有一个指针,所以如果我输入一个新学生,我可以创建一个与User的关系。

我的问题是我正在尝试为学校班级做同样的事情,这个班级是一个预先填充的班级,当我创建一个新学生时,我需要通过school_id引用该班级,该班级在学生班级中指针。

我班上的图片

User Class

Student Class

School Class

因此,从图像中可以看出,用户类中的object_id是student类中的parent_id。现在我需要将School类中的object_id或school_id作为Student Class中的school_id。

预期结果:

用户" jamiemw" - >学生" johnnie Williams" - >学校"南风"

以下是我用

尝试的内容
PFObject *kid = [PFObject objectWithClassName:@"Kids"];
kid[@"child_name"] = @"Johnnie Williams";
kid[@"age"] = @"14";
kid[@"date_of_birth"] = @"02/27/2001";
[kid setObject:[PFUser currentUser] forKey:@"parent_id"];

//this is what does not work.
[kid setValue:[PFQuery queryWithClassName:@"Schools"] forKey:@"student_id"];
[kid save];


PFQuery *query = [PFQuery queryWithClassName:@"Kids"];
[query whereKey:@"parent_id" equalTo:[PFUser currentUser]];

[query findObjectsInBackgroundWithBlock:^(NSArray *results, NSError *error)
{
    for(int i = 0; i <= results.count; i++){
                NSLog(@"%@", [results objectAtIndex:i]);
                }
}];

1 个答案:

答案 0 :(得分:0)

您的首要问题是[PFQuery queryWithClassName]会返回PFQuery,如documentation所示。存储此查询实例可能不会为您提供任何有用的信息,因此您需要首先执行您实例化的查询并从中提取所需的数据,然后将其保存到kid PFObject中的键。

我注意到的第二个问题是,对于您发布上述屏幕截图的任何表格,它似乎不是一个键student_id。我假设这是一个错字,你打算写[kid setValue:[PFQuery queryWithClassName:@"Schools"] forKey:@"school_id"];

用以下代码替换上面提到的代码行应该可以达到预期的效果:

[PFQuery queryWithClassName:@"Schools"];
[query whereKey:@"school_id" equalTo:@"southwindE123"];
// getFirstObject can be used here because school_id 
// is assumed to be a unique key
PFObject *school = [query getFirstObject];
[kid setValue:school forKey:@"school_id"];