当模态视图(第二视图)被解除时,在ViewController中刷新核心数据 - Swift

时间:2016-03-29 15:29:49

标签: ios swift core-data uiviewcontroller

我在解雇模态视图后试图弄清楚如何重新加载我的UIViewController。我发生的事情是从视图1(我的UIVIewController)到模态视图,我对Core Data进行了更新。完成后,我保存核心数据并关闭模态视图,将用户发送回View 1(UIViewController)。问题是UIViewController没有将更新的更改提取到核心数据(而是提供旧信息,因为它尚未刷新)。

这是我认为可以解决的最接近的答案,但我在从Objective-C转换为Swift时遇到了麻烦。

有什么想法吗?在此先感谢您的帮助。

2 个答案:

答案 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
}