嗨,我是核心数据的新手。在重新加载子对象或位于第二个表视图上的NSSet对象时,我遇到了困难。
因此,我有两个表视图控制器,第一个是预算,我可以在其中添加或删除预算。在该预算对象中,它与费用对象有一对多的关系(因此费用是NSSet)。
当我点击其中一个预算单元后,它会带我到费用的NSSet,然后我使用allObjects方法将费用NSSet转换成NSArray,如下所示:
_expenses = [[_currentBudget expenses]allObjects];然后,我填充了表视图控制器,它显示了在该预算中可用的所有个人支出。然后,我有一个add (+) bar按钮,将费用添加到当前预算中(或者调用核心数据给我的预定义方法:-(void)addExpensesObject(NSManagedObject*)object )。
一切都是伟大的,它可以被拯救。但是..。一旦我节省下来,我不知道如何重新加载NSArray的费用,因为它不像fetchedResultsController。(一旦添加了预算,我就能够在第一个表视图上重新加载数据,因为我使用了NSFetchedResultsControllerDelegate并实现了更改/更新/插入等方法)。
因此,我的问题是,如何重新加载这些NSArray对象集?我试图添加视图显示为[[self tableview]reloadData],但由于某种原因,这是行不通的。但当我回到第一个桌面视图(预算),然后再回到开支.它会重新装子弹。
非常感谢!
发布于 2014-02-06 16:58:45
最简单的解决方案可能也是在第二个表视图控制器中使用一个获取的结果控制器。而不是经过
[[_currentBudget expenses]allObjects]传递给第二个视图控制器,只需传递_currentBudget。在第二个视图控制器中,创建一个对“费用”实体具有提取请求的获取结果控制器,并使用如下所示的谓词
[NSPredicate predicateWithFormat:@"budget = %@", self.currentBudget]https://stackoverflow.com/questions/21609028
复制相似问题