我已经开始了我的第一个核心数据应用程序。我正在使用一个名为'Folder'的实体。
第一个视图控制器在tableview中显示所有文件夹,我可以添加到该视图中并重新加载数据。这很好,因为它使用获取请求来填充表。
override func viewWillAppear(animated: Bool) {
var error: NSError?
let request = NSFetchRequest(entityName: "Folder")
request.sortDescriptors = [NSSortDescriptor(key: "date", ascending: true)]
self.events = moc?.executeFetchRequest(request, error: &error) as! [Folder]
self.UITable.reloadData()
}
然而,当通过表格单元转换到另一个视图控制器时,我使用索引路径将选定的文件夹数据传递给控制器。例如
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if segue.identifier == "showDetails" {
let destinationVC = segue.destinationViewController as! FolderDetailsViewController
let indexPath = UITable.indexPathForSelectedRow()
let selectedFolder = folders[indexPath!.row]
destinationVC.selectedFolder = selectedFolder
}
}
我的第二个视图控制器使用从第一个表视图传递的数据显示在textfields中:
var selectedFolder: Folder!
folderNameLabel.text = selectedFolder?.title
folderDetailsLabel.text = selectedFolder?.details
folderDateLabel.text = displayDate
然后我有一个模态来编辑/保存从第二个控制器出现的模态中的文件夹数据:
//Edit and save event
let context = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
//Error
var error: NSError?
//Storing Data from fields
SelectedFolder!.title = FolderName.text
SelectedFolder!.details = FolderDetails.text
SelectedFolder!.date = FolderDate.date
context?.save(&error)
self.dismissViewControllerAnimated(true, completion: {});
当解除调制数据没有更新时,我必须回到第一个控制器重新加载数据并再次进行segue。
我认为这是因为我没有NSFetchRequest
(或NSFetchResultsController)来获取最新的更改。
当我在模态中进行更改时,重新加载selectedFolder
数据的最佳方法是什么?
答案 0 :(得分:0)
您似乎想要致电moc.refreshObject(folder, mergeChanges:true)
请参阅文档here。
答案 1 :(得分:0)
如果您的模态视图以全屏显示,则可以在viewWillAppera()中刷新第二个视图。
override func viewWillAppear(animated: Bool) {
{
folderNameLabel.text = selectedFolder?.title
folderDetailsLabel.text = selectedFolder?.details
folderDateLabel.text = displayDate
}