我的应用中有两个实体文件夹&的列表即可。第一个视图控制器是一个包含文件夹实体列表的表视图。当点击表格视图单元格时,我会切换到显示该文件夹的所有列表(有序集合)的另一个表格视图。当从表视图单元格中进行切换时,我将引用传递给第二个视图控制器。
let destinationVC = segue.destinationViewController as! ListViewController
let indexPath = UITable.indexPathForSelectedRow()
let selectedList = folders[indexPath!.row]
destinationVC.selectedFolder"
但是在我的第二个视图控制器中,我没有使用获取请求,而是使用该文件夹的引用。我有一个函数将数据加载到一个数组中,我用它来填充tableview。
var folderListArray = [List]()
func loadData() {
var unsortedList = NSMutableArray()
for singleItem in selectedFolder.list {
let loopNote = singleItem as! List
unsortedList.addObject(loopNote)
}
let sortDescriptor = NSSortDescriptor(key: "date", ascending: true)
guestlistArray = unsortedList.sortedArrayUsingDescriptors([sortDescriptor]) as! [list]
self.tableView.reloadData()
}
我在viewWillAppear&中使用函数loadData
。 viewDidAppear。但是当我使用模态添加到列表然后关闭模式时,表视图不会重新加载数据。正确保存,我只需要回到上一个视图控制器并再次查看以查看添加的项目。
这是为什么?保持这种类型的托管对象数据同步的最佳方法是什么?
答案 0 :(得分:0)
确保你
List
分配给正确的Folder
。然后你的重载方法应该工作。
另外,设置断点以检查是否调用了方法。如果没有,请考虑实现委托,该委托是处理编辑或添加数据的详细控制器的标准模式。
最后,考虑简化排序代码。您实际上是在制作两份数据,这实际上是没有必要的。我建议你在Folder
类中添加一个函数来返回一个排序列表。这可以是使用sortedArrayUsingDescriptors
的API NSSet
的单线程。
答案 1 :(得分:0)
viewDidLoad
不会被调用。如果将segue更改为push segue,则在将项添加到 tableview 后会调用viewDidLoad
,然后您可以重新加载表数据。