您好我是Core数据的新手。我在重新加载子对象或位于第二个tableview上的NSSet对象时遇到了困难。
所以我有两个tableview控制器,第一个是Budget,我可以添加或删除预算。在该预算对象中,它与Expense对象具有一对多关系(因此,费用是NSSet)。
当我点击其中一个预算单元格后,它将我带到NSSet of Expenses,然后我使用下面的allObjects方法将Expenses NSSet转换为NSArray:
_expenses = [[_currentBudget expenses]allObjects];
然后我填充了表视图控制器,它向我显示了该预算中可用的所有个人费用。然后我有一个添加(+)栏按钮,将费用添加到当前预算中(或调用核心数据给我的预定义方法:-(void)addExpensesObject(NSManagedObject*)object
一切都很棒,可以保存。但是....一旦我保存,我不知道如何重新加载NSArray的费用,因为它不像fetchedResultsController。 (一旦添加预算,我就可以在第一个tablview上重新加载数据,因为我使用了NSFetchedResultsControllerDelegate并实现了更改/更新/插入等方法)。
所以我的问题是,如何重新加载那些NSArray对象?我试图添加viewdidappear [[self tableview]reloadData]
,但由于某种原因这不起作用..但是当我回到第一个tableview(预算)并重新开始付费时......它会重新加载。
非常感谢!
答案 0 :(得分:2)
最简单的解决方案可能是在中使用获取的结果控制器 第二个表视图控制器也是如此。而不是传递
[[_currentBudget expenses]allObjects]
到第二个视图控制器,只需传递_currentBudget
。在第二个视图中
控制器,用a创建一个获取的结果控制器
在"费用"上获取请求实体并使用类似
[NSPredicate predicateWithFormat:@"budget = %@", self.currentBudget]