带有fetchedresultscontroller的ios UITableView - 添加自定义行

时间:2014-07-28 06:35:41

标签: ios uitableview

我的UITableView数据来自NSFetchedResultsController

这是我的tablewView:

enter image description here

我需要添加一行"所有类型"。它还需要:

  1. 可与所有其他项目分类
  2. 可选择(现已选择设计)
  3. 选择"所有类型"应该取消选择其他行
  4. 有所了解,它是一个"所有类型"选中时
  5. 我已阅读Add extra row to a UITableView managed by NSFetchedResultsControllerNSFetchedResultsController prepend a row or section。鉴于方法无法对数据进行排序,或者看起来如此hacky并产生如此多的难以维护的代码,因此无法更改逻辑和维护代码。

    还有其他好的选择吗?

    PS。我明白,我的问题可能听起来很广泛"并没有包含代码,但我认为这是非常常见的问题。

1 个答案:

答案 0 :(得分:1)

我认为这根本不是一个常见的问题。我可以看到做你正在尝试的东西似乎很自然但是让我们分析你的情况:你通常拥有的是2个对象数组,你希望将它们排序为单个数组。现在这是一个非常普遍的情况,我相信每个人都知道如何解决这个问题。您需要创建一个对象数组,然后对其进行排序。

我看到它的方式有3种选择:

  • 获取所有项目,合并2个数组,排序并显示它们。这不是一个好主意,因为如果数据库中有很多项目,你的内存消耗可能会有点过大。
  • 将额外数据放入数据库并像平常一样使用获取结果控制器。这应该可以正常工作,但您可能需要标记这些项目,以便稍后将其删除或将其保留在数据库中,但在您希望不显示它们的地方忽略它们。
  • 创建一个临时数据库,并结合需要从数据库中获取的内容和您的其他数据。如果您的数据在此列表中是只读的(这实际上就是您发布的内容中的情况),这种方法非常有用。最好是在对象之间创建某种链接。例如,某种类型的ID会很棒,这样当用户从第二个数据库中选择一个对象时,您只需读取ID并从原始数据库中获取该对象。