我正在构建费用跟踪器,其中Expense
只能属于一个Category
,但可以有多个Tag
s。这是我的对象图:如何在NSFetchedResultsController中构建子部分
在我列出所有的费用表视图的画面,我想费用由日期(sectionDate
)进行分组,然后由Category
(或者,使用分段控制,通过Tag
)。这是预期的UI:
我已经可以做出NSFetchedResultsController
查询所有费用,按日期节他们,然后按类别搜索,但我不能得到(1)类别和总( 2)其中的费用清单。我该如何着手做这件事?这是我当前的代码:
let fetchedResultsController: NSFetchedResultsController<NSFetchRequestResult> = {
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Expense")
fetchRequest.resultType = .dictionaryResultType
fetchRequest.sortDescriptors = [
NSSortDescriptor(key: #keyPath(Expense.sectionDate), ascending: false)
]
fetchRequest.propertiesToFetch = [
#keyPath(Expense.sectionDate),
#keyPath(Expense.category)
]
fetchRequest.propertiesToGroupBy = [
#keyPath(Expense.sectionDate),
#keyPath(Expense.category)
]
let fetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest,
managedObjectContext: Global.coreDataStack.viewContext,
sectionNameKeyPath: #keyPath(Expense.sectionDate),
cacheName: nil)
return fetchedResultsController
}()
是'sectionDate'完全相同的所有项目在该日期组? –
@JonRose是的。我有'Expense'的扩展名,每当'dateSpent'被修改时它会设置'sectionDate'。 'sectionDate'是只有MM/DD/YY组件的'dateSpent'。 'sectionDate'本身也存储在核心数据中 - 它不是一个瞬态属性。 –