Core data 将NSFetchedResultsController与NSManagedObject和获取的属性一起使用

Core data 将NSFetchedResultsController与NSManagedObject和获取的属性一起使用,core-data,nspredicate,nssortdescriptor,nsfetchedresultscontroller,Core Data,Nspredicate,Nssortdescriptor,Nsfetchedresultscontroller,我有一个Cards和Printings数据库,我在一个商店里有这些数据库(参考数据),我的用户数据Containers和CardInstances在另一个商店里(如苹果所建议的)。每个用户的卡都是一个表CardInstance,其中包含与卡的特定打印相对应的特定printingID。我正在尝试使用一个NSFetchedResultsController来过滤卡片的值,这样它就可以使用可重用代码管理分组和内容 同样,以下是表的基本概述: Card(它具有namerenormalized和alpha

我有一个
Card
s和
Printing
s数据库,我在一个商店里有这些数据库(参考数据),我的用户数据
Container
s和
CardInstance
s在另一个商店里(如苹果所建议的)。每个用户的卡都是一个表
CardInstance
,其中包含与卡的特定打印相对应的特定
printingID
。我正在尝试使用一个
NSFetchedResultsController
来过滤卡片的值,这样它就可以使用可重用代码管理分组和内容

同样,以下是表的基本概述:
Card
(它具有
namerenormalized
alphaNormalized
以及
typeNormalized
属性,我希望在“获取结果”控制器中对这些属性进行筛选和分组)。
打印
(具有
关系和特定的
打印ID
CardInstance
(它有一个
container
关系、一个
printingID
属性和一个
printingFetch
上的
printingID=$FETCH\u SOURCE.printingID
获取属性,谓词为:
printingID=$FETCH\u SOURCE.printingID>)。
Container
(它与
CardInstance
s有一对多关系)

给定一个
容器
,我想使用一个NSFetchedResultsController,这样我就可以更改名称和类型部分之间的排序和分组。因此,我有一个fetchRequest,其中我将实体类型设置为
CardInstance
,并将一个谓词设置为
container=%@
,即给定的容器

1) 如何设置排序描述符,以便在
printingFetch.card.nameNormalized
printingFetch.card.typeNormalized
上进行排序

2) 如果我想找到所有包含单词@“the”的卡片,我如何过滤结果?我在想一些类似于printingFetch.card.name的东西,它包含%@
,@“the”,但这只会导致崩溃


我意识到我可以手动完成这一切,但如果容器最终包含大量卡片,那么速度可能太慢,我不想重新编写
NSFetchedResultsController
应该自动为我编写的分区和分组代码。

为什么这些实体驻留在不同的存储中?苹果公司特别提到,不可能在商店之间建立关系(只能手动维护),因为卡片和打印是缓存/生成的参考数据,而卡片实例和集合是用户数据。苹果明确表示要做到这一点,而不是在用户商店中保留可复制的数据。