如果我有多个实体,比如说流派,艺术家,歌曲,并且三个一对多之间存在某种关系,那么假设我有一个通用的NSFetchedResultsController
,我该如何搜索流派中的艺术家,即在我的CoreManager
类中,我的表视图符合。该代码可以很好地请求实体的内容,但是我不确定是否利用一种流派来显示其中的这些艺术家并转到多个级别。
我的FRC代码是
fetchedResultsController = {
let request = fetchRequest
request.sortDescriptors = sortDescriptor
request.predicate = fetchPredicate
request.returnsObjectsAsFaults = false
let context = managedContext
let frc = NSFetchedResultsController(
fetchRequest: fetchRequest,
managedObjectContext: context,
sectionNameKeyPath: sectionNameKeyPath , cacheName: cacheName)
return frc
}()
答案 0 :(得分:0)
如果您希望FRC用Artists
过滤Genre
,则需要从Artist
到Genre
添加一个关系({{1}的倒数} artists
实体上的关系)。附带说明一下,几乎应该为每种关系都定义一个反函数-在极少数情况下没有反函数的情况会更好。
我不确定您是将每个Genre
视为仅包含一个Artist
,还是可能将其视为多个-适当地将关系设置为Genre
或to-one
,并分别命名为to-many
或genre
。每种情况下所需的谓词将有所不同:
对于一对一,您应该使用
genres
对于许多您会使用
NSPredicate(format:"genre == %@", chosenGenre)
(假设您已经引用了NSPredicate(format:"ANY genres == %@", chosenGenre)
,作为要过滤的流派。如果您实际上只有流派标题,则可以使用:
chosenGenre
对于许多您会使用
NSPredicate(format:"genre.title == %@", chosenGenreTitle)