2015-09-02 4 views
0

Я создаю приложение, использующее синтаксический анализ в качестве бэкэнд, у меня есть три Classes (User, Student, School). В настоящее время у меня есть указатель между классом User и Student Class, поэтому, если я вхожу в нового ученика, я могу создать отношение к пользователю.Parse.com Хранить данные из одного объекта в другой объект

Моя проблема заключается в том, что я пытаюсь сделать то же самое для класса School, этот класс является предварительно заполненным классом, и когда я создаю нового ученика, мне нужно ссылаться на этот класс по school_id, который находится в классе ученика, указатель.

образы моего класса

User Class

Student Class

School Class

Так из изображений вы можете увидеть, что object_id из пользовательского класса является parent_id в классе студентов. Теперь мне нужно иметь object_id или school_id из класса School как school_id в классе учеников.

Ожидаемые результаты:

пользователя "jamiemw" -> Student "Johnnie Williams" -> Школа "Southwind"

ниже является то, что я пытался с

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]); 
       } 
}]; 

ответ

0

Ваша первая проблема заключается в том, что [PFQuery queryWithClassName] возвращает PFQuery, как показано на рисунке documentation. Хранение этого экземпляра запроса, вероятно, не даст вам никакой полезной информации, поэтому сначала вы должны выполнить запрос, который вы создали, и извлечь из него нужные данные, прежде чем сохранять его в ключ в PFObject kid.

Вторая проблема, которую я заметил, заключается в том, что не существует ключа 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"]; 

 Смежные вопросы

  • Нет связанных вопросов^_^