Существует ли предикат основных данных для всех объектов в связанном списке?

#core-data #linked-list #predicate

#core-data #связанный список #предикат

Вопрос:

Есть ли способ сформулировать предикат основных данных для данного объекта, представляющего начало односвязного списка и все остальные объекты в этом списке?

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

УТОЧНЕНИЕ:

Я использую их для UITableView ‘s NSFetchedResultsController , поэтому они должны быть частью выборки, а не чем-то, что я повторяю в коде.

Ответ №1:

Вы бы не стали использовать предикат для связанного списка. Вместо этого вы бы просто начали с первого интересующего объекта и переходили по взаимосвязям, вызывая nextObject , пока не наткнетесь на тот, у которого не было nextObject значения.

Вы можете найти первый и последний объекты с предикатом в выборке, просто выполнив поиск previousObject==nil и nextObject==nil .

Предикаты не понимают произвольно длинных цепочек отношений. Они понимают цепочку как enity1.entity2.entity3 но не nextObject.nextObject.nextObject... , потому что у них нет способа узнать, когда остановиться.

Комментарии:

1. Извините, я не был ясен в своем первоначальном вопросе: я использую их для NSFetchedResultsController UITableView, поэтому они должны быть частью выборки, а не чем-то, что я повторяю в коде.

2. Предикаты вычисляются в логические выражения, поэтому вы действительно не можете получить утверждение true или false о связанном списке. Порядок произвольный, поэтому проверять нечего. nextObject — это просто nextObject.