刚从 CoreData 开始,只是想知道如何创建“复杂” FetchRequest
。我有以下数据结构(缩小问题):
有几本书和几个人(创作者)。创作者可以是作者、翻译者、插画家 (...)。一些“创作者”有几个“角色”,这就是我最终选择“CreatorBook-Entity”的原因,因为有时同一个创作者对不同的书有不同的角色..
无论如何......在应用程序中,我展示了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
?(我上面的代码停在第一个)
是否可以从 Creator 中获取所有Books
按属性排序的内容(例如作者全名(不止一位作者 -> 多次显示图书))?