ios - 核心数据 - 如何在第二个 TableView Controller 上重新加载 NSSet(子对象)

标签 ios iphone objective-c core-data uitableview

您好,我是核心数据的新手。我在重新加载我的子对象或位于第二个 TableView 上的 NSSet 对象时遇到困难。

所以我有两个 TableView Controller ,第一个是预算,我可以在其中添加或删除预算。在该预算对象中,它与 Expense 对象具有一对多关系(因此 Expense 是 NSSet)。

当我点击其中一个预算单元格后,它会将我带到 NSSet of Expenses,然后我使用如下所示的 allObjects 方法将 Expenses NSSet 转换为 NSArray:

_expenses = [[_currentBudget expenses]allObjects];

然后我填充了 TableView Controller ,它显示了该预算内可用的所有个人费用。然后我有一个添加 (+) 栏按钮来将费用添加到当前预算中(或调用核心数据给我的预定义方法:-(void)addExpensesObject(NSManagedObject*)object

一切都很好,可以保存。但是....一旦我保存了,我就不知道如何重新加载 NSArray 的费用,因为它不像 fetchedResultsController。 (一旦添加了预算,我就能够在第一个 tablview 上重新加载数据,因为我使用了 NSFetchedResultsControllerDelegate 并实现了更改/更新/插入等方法)。

所以我的问题是,如何重新加载这些 NSArray 对象集?我试图在 viewdidappear [[self tableview]reloadData] 中添加,但由于某种原因它不起作用。但是当我返回第一个 tableview(预算)并返回费用时。 .. 它重新加载。

非常感谢!

最佳答案

最简单的解决方案可能是在 第二个 TableView Controller 也是如此。而不是通过

[[_currentBudget expenses]allObjects]

到第二个 View Controller ,只需传递_currentBudget。在第二个 View 中 Controller ,创建一个获取结果 Controller 在“费用”实体上获取请求并使用像

这样的谓词
[NSPredicate predicateWithFormat:@"budget = %@", self.currentBudget]

关于ios - 核心数据 - 如何在第二个 TableView Controller 上重新加载 NSSet(子对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21609028/

相关文章:

ios - 从 iphone 5 到 iphone 6 的自定义导航栏大小

ios - 对默认的 isEqual 和 hash 实现感到困惑

ios - enumerateObjectsUsingBlock 和完成在一起

iphone - CSS3 字体嵌入在 Iphone OS3.0 safari 中不起作用?

iphone - JSON 响应显示在警报 View 中?

objective-c - 如何更改 Sprite 的 Z 顺序?

ios - 如何更改 iPhone X 上的主页指示器背景颜色?

ios - 覆盖扩展方法的替代方法

ios - 在 SwiftUI ForEach 中不能有条件

ios - willMoveToSuperview 被调用了两次