Я думаю, что вы, возможно, не полностью описали свою ситуацию, потому что, конечно, Core Data действительно поддерживает отношения «многие ко многим». Я подозреваю, что вы можете иметь в виду, что NSFetchedResultsController не поддерживает отношения «многие ко многим»? Насколько я смог определить, это правильно. ( Редактировать : можно использовать NSFetchedResultsController с отношениями "многие ко многим" ... это просто не очень понятно, как это сделать.)
Чтобы сделать это без NSFetchedResultsController, идентифицируйте / извлеките интересующий вас объект A, а затем просмотрите интересующие вас отношения. Итак, если вы уже знаете, что заинтересованы в конкретном объекте A, который я буду вызывать theAObject, с именами классов A и B, вы можете просто обойти отношения, используя точечный синтаксис и быстрое перечисление, используя что-то вроде следующего:
for (B *theBObject in theAObject.BObjects) {
NSLog(@"theBObject.name: %@.", theBObject.name);
// Run whatever code you want to here on theBObject.
// This code will run once for each B Object associated with theAObject
// through the BObjects relationship.
}
В качестве альтернативы, вы можете настроить запрос на выборку, чтобы получить набор интересующих вас AObject-ов, а затем пересечь отношение BOjects для каждого из них. Не имеет значения, что это отношение многие ко многим ... каждый AObjecct будет возвращать все объекты B, которые находятся в его отношении BObjects.
Позже
Теперь вы говорите, что хотите получить все имена и отобразить их в метке. Давайте разберем это для вас:
NSString *myLabel = null;
// You may of course want to be declaring myLabel as a property and @synthesising
// it, but for the sake of a complete example we'll declare it here which means
// it will only have local scope.
for (B *theBObject in theAObject.BObjects) {
myLabel = [myLabel stringByAppendingString:theBObject.name];
// Add a line break in the string after each B object name.
myLabel = [myLabel stringByAppendingString:@"\n"];
}
// Do something with your myLabel string to set your desired label.