gpt4 book ai didi

ios - (UIApplication.sharedApplication().delegate as AppDelegate).managedObjectContext

转载 作者:可可西里 更新时间:2023-11-01 01:37:57 24 4
gpt4 key购买 nike

我读到这行代码从 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 as AppDelegate).managedObjectContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33521401/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com