在事件发生后访问另一个视图控制器的属性

时间:2017-03-18 00:21:02

标签: ios swift core-data

我有2个ViewControllers,第一个有一个数组,一旦ViewController出现就被一个获取请求填充。第二个ViewController引用了该数组。但是,这是在引用它之前引用一个空数组 我希望在数组填满后获得引用。这是一个片段。

--conf spark.executor.extraJavaOptions="-Duser.timezone=America/Los_Angeles"

--conf spark.driver.extraJavaOptions="-Duser.timezone=America/Los_Angeles"

感谢。

1 个答案:

答案 0 :(得分:1)

以下是解决方案:

class VC1: UIViewController {
    lazy var coreDataObjects = fetchRequestThatFillsTheArray() 

    func fetchRequestThatFillsTheArray() {
        //calling NSFetchRequest
    }
}

如果您仍想要原始代码的解决方案,或者您在fetchRequestThatFillsTheArray()中遇到问题lazy。您必须使用NSNotification。阅读Notification Programming Topics

---更新您的评论----

您应该稍微更改一下代码。

class VC1: UIViewController {
    lazy var coreDataObjects:[NSManagedObject] = self.fetchRequestThatFillsTheArray() 

    func fetchRequestThatFillsTheArray() -> [NSManagedObject] {
        //calling NSFetchRequest
    }
}

但是,由于您在self.property中使用了fetchRequestThatFillsTheArray(),因此无法使用此解决方案。

您必须使用NSNotification。这意味着您在fetchRequestThatFillsTheArray()完成后发送通知。并在vc2中注册通知。当vc2收到通知时,它会按照自己的意愿行事。