我读到这行代码从 AppDelegate 获取托管对象上下文。
let managedObjectContext = (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext
我阅读了每个单词的 Apple 文档,尝试重建上面提到的正确的整体输出含义。 谁能清楚详细地解释一下这行语法的含义?
最佳答案
首先访问 UIApplication
类。
这是一个单例。它只有一个实例,是在应用程序启动时由 cocoa touch 框架创建的。
然后,您可以通过调用类方法 sharedApplication
来访问其唯一的实例。 “shared(classname)”是返回单例实例的方法的通用名称。另一个常见名称是“sharedInstance”。
然后您访问其委托(delegate)
。这遵循您在使用 cocoa touch 开发 iOS 应用程序时经常看到的常见委托(delegate)模式。但这是您拥有的一个非常特殊的代表。它是AppDelegate
类。
当您让 Xcode 使用核心数据创建新的应用程序项目时,它会在您的 AppDelegate 类中创建一些标准方法以方便您使用。
其中之一是managedObjectContext
的(计算的)getter。
但是,UIApplication
仅将其委托(delegate)视为实现 UIApplicationDelegate
协议(protocol)的任何对象。 UIApplication
不知道核心数据的附加方法。
这就是为什么您必须将 .sharedApplication()
的输出转换为名为 AppDelegate
的实现。 as
是 Swift 中的强制转换运算符。
转换后,您实际上可以访问 getter managedObjectContext
。
就是这样。
关于ios - (UIApplication.sharedApplication().delegate 作为 AppDelegate).managedObjectContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33521401/