我在解雇模态视图后试图弄清楚如何重新加载我的UIViewController。我发生的事情是从视图1(我的UIVIewController)到模态视图,我对Core Data进行了更新。完成后,我保存核心数据并关闭模态视图,将用户发送回View 1(UIViewController)。问题是UIViewController没有将更新的更改提取到核心数据(而是提供旧信息,因为它尚未刷新)。
这是我认为可以解决的最接近的答案,但我在从Objective-C转换为Swift时遇到了麻烦。
有什么想法吗?在此先感谢您的帮助。
答案 0 :(得分:3)
这是快速的NSFetchedResultsController示例
override public func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
do {
try fetchedResultsController.performFetch()
} catch {
print("An error occurred")
}
}
lazy var fetchedResultsController: NSFetchedResultsController = {
let animalsFetchRequest = NSFetchRequest(entityName: "Animal")
let sortDescriptor = NSSortDescriptor(key: "classification.order", ascending: true)
animalsFetchRequest.sortDescriptors = [sortDescriptor]
let frc = NSFetchedResultsController(
fetchRequest: animalsFetchRequest,
managedObjectContext: self.context,
sectionNameKeyPath: nil,
cacheName: nil)
frc.delegate = self
return frc
}()
委托方法
func controllerDidChangeContent(controller: NSFetchedResultsController) {
// update UI
}
答案 1 :(得分:1)
我对此问题的建议是创建将通知View 1的委托。
例如:
在呈现的视图控制器中创建委托:
protocol NotifyReloadCoreData
func notifyDelegate()
end
创建视图控制器的属性:
var delegate: NotifyReloadCoreData?
按保存时或类似的内容:
delegate.notifyDelegate()
在你的视图1
中class UIViewController1: UIViewController, NotifyReloadCoreData
并实现功能
func notifyDelegate(){
// reload core data here
}