2015-01-18 3 views
1

У меня есть Post и класс Comment. Я пытаюсь сохранить комментарий с указателем на объект post. У меня есть идентификатор моего почтового объекта. Вот мой код:'Обнаружил циклическую зависимость при сохранении.' при попытке сохранить указатель на существующий объект анализа

PFObject *comment = [PFObject objectWithClassName:@"Comment"]; 
comment[@"content"] = comment; 
PFObject *post = [PFObject objectWithoutDataWithClassName:@"Post" objectId:postId]; 
comment[@"post"] = post; 
[comment saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
    if(succeeded){ 
     //rest... 
    } 
}]; 

Однако, сохранив его сразу же возникает исключение: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Found a circular dependency when saving.' на стороне клиента.

Я также пробовал PFObject *post = [PFObject objectWithoutDataWithObjectId:postId, что приводит к ошибке '+[PFObject parseClassName]: unrecognized selector sent to class.

Должность не зависит от объекта комментария каким-либо образом (и даже если это так, это уже сохраненный объект (по мере того, как пользователь комментирует его), и указатель должен его вызвать), почему я получить эту ошибку?

+0

Вы пытались использовать фактический, сохраненный объект post, а не objectWithoutData? – danh

+0

@danh У меня нет доступа к нему. У меня только ID. –

ответ

2

Я часто использую Parse, и я не уверен, почему он говорит, что у вас есть круговая зависимость. Она смотрит на меня, что ваша проблема эти строки:

PFObject *comment = [PFObject objectWithClassName:@"Comment"]; 
comment[@"content"] = comment; 

загружаемой объект, затем установить, что объект как «содержание». Каждый раз, когда вы загружаете объект комментария, вы сохраняете объект комментария в родительском объекте, создавая цикл. Не могли бы вы попробовать переписать это и, возможно, создать новый класс, который управляет обоими сообщениями и комментариями?

+0

Вы правы. Это была опечатка (на самом деле забыл переименовать переменную). У меня был «комментарий» как строка содержимого, затем я переименовал его, забыв переименовать эту строку. Виноват. –

+0

Я не могу поверить, что совершил ту же ошибку. Благодарю. – estemendoza