Только начиная с CoreData и просто интересно, как создать «сложный» FetchRequest
. Я следующие структуры данных (уменьшенные на вопрос):Объектив C Основные данные: выборка из нескольких объектов
Есть несколько книг и несколько людей (МКО). Создатели могут быть автором, переводчиком, иллюстратором (...). У некоторых «Создателей» есть несколько «ролей», поэтому я оказался в «CreatorBook-Entity», потому что иногда один и тот же создатель имеет разные роли для разных книг.
В любом случае ... В приложении I показать Book
и есть CollectionView с другим Books
от того же автора (= Creator
с role= Author
). Я пытался создать FetchRequest
, но не знал, как объединить различные сущности, поэтому на данный момент я перебирать CoreData как следующее:
//Get all Creators from Book and get the first Author
Creator* author;
NSSet* creatorSet = self.book.creator;
if([creatorSet count] > 0){
for(CreatorBook *uObjects in creatorSet){
if([uObjects.role isEqualToString:@"Author"]){
author = uObjects.creator;
break; //get first author
}
}
}
//Get all the Book from the same Author
if(author != nil){
NSSet* authorBooks = author.book;
NSMutableArray* books = [[NSMutableArray alloc] init];
for(CreatorBook* object in authorBooks){
Book* a = object.book;
[books addObject:a];
}
_authorBookCollection = books;
[self.bookPreview reloadData];
}
Есть ли способ, чтобы получить тот же результат с одним FetchRequest
?
Как я могу получить все Books
, если их более одного Author
? (мой код выше останавливается при первом)
Можно ли получить все Books
, упорядоченные по атрибуту от Создателя (например, авторы fullname (более одного автора -> показ книги несколько раз))?