2010-07-30 6 views
1

предположив, что вы имели отношения Основные данные, такие как:Основные данные - Как получить соответствующие записи через присоединиться к таблице

Book ---->> Chapter ---->> Page 

Пусть даны Book объект под названием aBook, aBook.chapters вернется глав книги. Но как вы получаете страницы книги (т. Е. book.pages)? И как бы вы получили страницы, отсортированные по свойству pageNumber?

Спасибо!

+0

Это будет помогите, если перестанете думать о Core Data с точки зрения SQL. В базовых данных нет таблиц объединения. Core Data - это система управления графами объектов. Объекты не являются таблицами. Свойства не являются столбцами, а строки - не управляемыми объектами. Если вы думаете об объектах, Core Data становится намного проще понять. – TechZen

ответ

2

Учитывая Book экземпляр, myBook:

NSSet* pages = [myBook valueForKeyPath:@"[email protected]"]; 

даст вам объединение всех страниц. См. Раздел «Set and Array Operators» в руководстве по программированию кода ключа.

NSArray *chaperPages = [myBook.chapters valueForKeyPath:@"pages"]; 

даст вам множество NSSet с страниц, один набор в главе.

0

Самый быстрый способ получить все Page е годы в Book (myBook), упорядоченные по pageNumber будет:

NSSet *pageSet = [myBook valueForKey:@"[email protected]"]; 
NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc] [email protected]"pageNumber" ascending:YES]; 
NSArray *pages = [pageSet sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDesc]]; 
[sortDesc release]; 

Это даст массив со всеми страницами из всех разделов, отсортированных по pageNumber

Смежные вопросы