使用Core Data,我的fetchedResultsController带有一个日期字段。
我想根据日期显示两个部分:如果它是将来的日期,我想在活动部分显示它,否则在非活动部分显示。
除了我想在两个部分之间我想要显示“草稿部分”。
同样重要的是要提到每个部分内部,我希望它们按日期排序。
1)我还可以使用fetchedResultsController吗?或者我需要创建3个不同的数组?
2)sectionNameKeyPath上使用的字段是否必须是String?
修改
3)我可以按字母顺序设置我的部分的顺序吗?
编辑2:
for 3)章节不按字母顺序排序。如果它们与我设置为fetchRequest的NSSortDescriptor没有任何关系,如何修复各个部分的顺序? 提前谢谢。
答案 0 :(得分:1)
部分需要由实例出现在tableview中的实体的某些属性定义。你的标准属性,字符串,数字,日期等有一些内置的比较器,使这成为可能,例如按字母顺序。比较器使软件可以确定哪个对象属于哪个部分。
但是,如果要添加高度自定义的部分,例如根据数据属性是过去还是将来划分对象,则需要提供自己的比较器。
在这种情况下,您可能希望在NSDate上添加一个类别,该类别返回bool,无论日期是过去还是将来。类似[NSDate isActive]
之类的东西,然后将获取的结果控制器的sectionNameKeypath设置为theDateAttribute.isActive
。然后,获取的结果控制器将为键返回的每个值创建一个部分,在这种情况下将为两个。
如果您提供日期键控排序描述符,则所有行将按其日期在其各个部分中排序。
答案 1 :(得分:0)
如果您正在为NSManagedObjects使用自定义对象,那么您真正需要做的就是定义一个返回它应该在哪个部分的方法。不确定草稿部分的含义,但只要NSManagedObject子类有一个方法产生“草稿”然后你应该没事。
要在一个部分中按日期排序,只需将排序描述符添加到获取请求中。就这么简单。
我在其中一个应用中做了类似的事情,所以如果您有任何其他问题请询问。
如果要自定义节和索引标题的创建,还需要查看子类化NSFetchedResultsController。全部都在docs。
第3部分)有几种方法
1可能看起来有点笨拙,但可能是我先尝试的。