gpt4 book ai didi

iphone - sectionNameKeyPath 通过多重关系

转载 作者:可可西里 更新时间:2023-11-01 05:00:25 26 4
gpt4 key购买 nike

我正在开发一个使用 Core Data 和 NSFetchedResultsController 的应用程序。模型设置是这样的:

/-----------\          /-----------\          /-----------\
|Part | |Kit | |Source |
|-----------| |-----------| |-----------|
|name | |name | |name |
|dimensions | |description| |location |
|... | |... | |... |
|-----------| |-----------| |-----------|
|kits | <<-\ |source | <<-----1 |kits |
| | \->> |parts | | |
\-----------/ \-----------/ \-----------/

因此,PartKit 具有多对任何关系(一个零件可以在一个或多个套件中,一个套件可以包含一个或更多部分)。每个Kit都来自一个Source,它可能提供一个或多个Kit

我目前正在创建一个 UITableView,它使用一个 NSFetchedResultsController 以及所有 Part 对象的简单列表。我想将这些部分分组,每个部分都是一个 Source 的名称。即:

|-------------------------------|
|Source One |
|-------------------------------|
|Part One |
|Part Two |
|Part Three |
|-------------------------------|
|Source Two |
|-------------------------------|
|Part Four |
|Part Two |
|Part Five |
|.... |
|-------------------------------|
| O |
|-------------------------------|

由于 Part 可能来自多个 Source,是否可以通过使用 sectionNameKeyPath 对 NSFetchedResultsController 执行此操作,或者我是否必须完全执行此操作不同的方式?

谢谢!

最佳答案

我不这么认为,因为 NSFetchedResultsController 不知道要使用哪个 Kit 来对 Part 进行排序,因为它是多对多的关系。

想一想 TreeView ,甚至是 Objective-C 继承结构,其中每个子节点只有一个父节点,但它本身可以有多个子节点。您可以轻松地将树从子节点向上递归到其父节点。但是,如果一个 child 可以有多个 parent ,那么在递归“树”(现在更像是一个图)时,它本质上并不知道选择哪个 parent 。

那么在您的数据模型中,Part 是否必须有很多 Kit?因为如果将 KitPart 之间的多对多关系更改为一对多关系,其中一个 Kit 可以有多个 Part,但是一个Part只能有一个Kit,那么你可以将NSFetchedResultsController上的sectionNameKeyPath设置为@ “kit.source.name” 按名称排序,一切正常。

当然,如果您确实需要 KitPart 之间的多对多关系,我当然不知道您的应用是如何工作的,但是如果您这样做,那么您可能无法使用 NSFetchedResultsController,并且必须自己实现获取 Source 和实现 UITableViewDataSource 方法:(

关于iphone - sectionNameKeyPath 通过多重关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3753607/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com