Я ответил на этот вопрос, когда вы разместили комментарий в исходной теме. Вам нужно внести некоторые изменения в работу рекурсии, чтобы она не зацикливалась. Есть много способов сделать это.
Например, вы можете изменить вызов, чтобы все отношения вместо этого вызывали метод в ваших подклассах NSManagedObject
, который возвращает только отношения, которые являются нисходящими. В этом проекте ObjectA будет возвращать отношение ObjectB, но Object B не будет возвращать никакого (или отношения к ObjectC и т. Д.). Это создает древовидную иерархию для прохождения рекурсии.
Следуйте логике кода. Он обрабатывает объект или объекты, которые вы ему передаете, и затем проходит через каждый объект, связанный с этим первым набором объектов. Вы уже из своего поста показали, что понимаете, что это петля. Теперь вам нужно разорвать этот цикл в вашем коде с помощью логики, чтобы превратить его из цикла в дерево.
Кроме того, я понимаю, что это может звучать так, будто я сутенерствую свою книгу. Я объяснил, как избежать этого цикла в своей книге, в главе «Многопоточность» в разделе об экспорте рецептов.
Обновление NSDate
Это звучит как ошибка в анализаторе JSON, который вы используете, так как он должен уметь обрабатывать даты. Однако ваш обходной путь жизнеспособен, за исключением того, что вам нужно конвертировать его с обеих сторон, что является PITA. Я бы посмотрел на ваш парсер и понял, почему он неправильно переводит даты, поскольку это довольно большое упущение.