Iphone 通过多个关系的sectionNameKeyPath
我正在开发一款使用核心数据和Iphone 通过多个关系的sectionNameKeyPath,iphone,cocoa-touch,core-data,ios,nsfetchedresultscontroller,Iphone,Cocoa Touch,Core Data,Ios,Nsfetchedresultscontroller,我正在开发一款使用核心数据和NSFetchedResultsController的应用程序。模型设置如下所示: /-----------\ /-----------\ /-----------\ |Part | |Kit | |Source | |-----------| |-----------| |-----------| |name |
NSFetchedResultsController
的应用程序。模型设置如下所示:
/-----------\ /-----------\ /-----------\
|Part | |Kit | |Source |
|-----------| |-----------| |-----------|
|name | |name | |name |
|dimensions | |description| |location |
|... | |... | |... |
|-----------| |-----------| |-----------|
|kits | <<-\ |source | <<-----1 |kits |
| | \->> |parts | | |
\-----------/ \-----------/ \-----------/
由于部分
可能来自多个源
s,是否可以使用sectionNameKeyPath使用NSFetchedResultsController执行此操作,或者我必须以完全不同的方式执行此操作
谢谢 我不这么认为,因为
NSFetchedResultsController
不知道使用哪个Kit
对零件进行排序,因为这是一个多关系
想想树视图,甚至Objective-C继承结构,其中每个子节点只有一个父节点,但它本身可以有许多子节点。您可以轻松地将树从子节点向上递归到其父节点。但是,如果一个孩子可能有许多父母,那么在递归“树”(现在更像是一个图形)时,它本质上不知道选择哪一个父母
那么,在您的数据模型中,部分
s是否必须有许多套件
s?因为如果将Kit
和Part
之间的多对多关系更改为多对多关系,其中Kit
可以有多个Part
s,但Part
只能有一个Kit,则可以将nsfetchedresultscocontroller
上的sectionNameKeyPath
设置为@“kit.source.name”
按名称排序,一切正常
当然,我不知道你的应用程序是如何工作的,如果你真的需要Kit
和Part
之间有很多关系,但是如果你需要,那么你可能无法使用NSFetchedResultsController
,并且必须实现fetching源代码和UITableViewDataSource
方法:(对于多对多关系,您可以使用NSFetchedResultsController获得此结果
请参阅以下答案:如何使用NSFetchedResultsController处理多对多关系
和示例项目:
|-------------------------------|
|Source One |
|-------------------------------|
|Part One |
|Part Two |
|Part Three |
|-------------------------------|
|Source Two |
|-------------------------------|
|Part Four |
|Part Two |
|Part Five |
|.... |
|-------------------------------|
| O |
|-------------------------------|