1

У меня есть модель данных ядра, которые выглядят примерно так:основных данных - запрос ко-многим

Author 
====== 
- name 
- bio 

- books (to-many relationship) 


Book 
==== 
- title 
- release date 

- author (to-one relationship) 

я представить пользователю представление таблицы авторов каждой ячейки таблицы представления автора и показывает его name и title последней книги, которую он написал.

Чтобы показать список авторов я использую NSFetchedResultsController со следующим NSFetchRequest:

NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Author"]; 
request.predicate = nil; 
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]]; 
request.fetchBatchSize = 20; 

Мой вопрос:

Как я должен получить название последней книги для каждого автора? могу ли я получить эту информацию в своем первоначальном запросе или мне нужно сделать некоторые дополнительные запросы?

ответ

0

Чтобы получить его в рамках одного и того же запроса вы можете включить атрибут на Author объект, который хранит последнюю книгу

Author 
====== 
- name 
- bio 
- latestBook 

- books (to-many relationship) 

Затем, чтобы получить детали просто использовать author.latestBook.title

Вы также необходимо для установки атрибута latestBook при добавлении последней книги в атрибут books.

В качестве альтернативы это может быть переходный атрибут, который вы вычисляете из набора книг на основе последних releaseDate.

1

Вам не нужно выполнять другой запрос на выборку, если у вас уже есть управляемый объект Author. Просто создайте отсортированный массив из свойства Authorbooks. Для этого вы можете использовать метод NSSetsortedArrayUsingDescriptors: и передать его в дескриптор, который сортируется по дате выпуска.

+0

Это означает, что я загружаю все книги автора из базы данных, чтобы получить один из них. – Eyal

+0

@ Эйял, ты прав. И это было бы хорошо для одного автора, но не для каждого автора в представлении таблицы. Поэтому я бы воспользовался ответом Гроеневальда. Мой ответ более педагогический, чем прагматичный. – bilobatum

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