2014-12-07 5 views
0

구문 분석에서 관계에 개체를 추가하려고합니다. 코드가 아무런 오류없이 추출되고 관계가 백 엔드에 나타나지 않으므로 개체가 저장되지 않았습니다.PFRelation addObject가 관계를 추가하지 않습니다

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 키가 두 번 선택되어 올바른지 확인하십시오.

+0

당신은 ... 어떤 의미에서 반전 귀하의 코드의 종류의 관계를 저장하지 ... 설명 할 답변을 입력하겠습니다. –

답변

3

문제는 절대로 관계를 저장하지 않는다는 것입니다. 블록 내에 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; 
}]; 
+0

내 바보 같은 실수를 지적 해 주셔서 대단히 감사합니다! 방금 블록 안에'[trip saveInBackground]'줄을 추가 했으므로'trip' 동기에 대한 질의를 할 필요가 없습니다. – gpichler