У меня есть 3 уровня вложен цикл:Заменить Для петель с NSPredicate для вызова Core Data
for (Region *region in group.associatedRegions) {
for (Boundary *regionBoundary in region.boundaries) {
for (Boundary *groupBoundary in group.boundaries) {
if ([groupBoundary.boundaryID isEqualToNumber:regionBoundary.boundaryID]) {
[boundarySet addObject:groupBoundary];
}
}
}
}
Это работает. Это достаточно быстро, что не замедляет приложение. Мне это не нравится. У меня сильное отвращение к этому уровню гнездования.
Я уверен, что смогу сделать то же самое с поиском NSPredicate
. Мой SQL не так хорош, поэтому я не уверен, с чего начать.
Group
, Region
и Boundary
все Core Data
NSManagedObject
s.
Каждый Group
имеет отношение «многие ко многим» к границам и отношение «1 ко многим» к регионам. Каждый Region
имеет отношение «многие ко многим» к границам.
Суть в том, что Group
имеет набор границ, которые он может видеть. A Region
имеет набор границ, которые он может видеть. A Region
может содержать Boundary
, который Group
не может видеть, поэтому его необходимо исключить.
Итак, для каждого Region
мне нужно найти набор границ, которые могут видеть как Group
, так и Region
.
Любые предложения?