- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我读到这行代码从 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/
谁能帮我理解以下两行之间的区别: [UIApplication.sharedApplication.delegate.window addSubview:myView]; [UIApplication
我刚刚从 XCode 6.4 升级到 Xcode 7 GM 并开始更改代码以符合 Swift 2。我无法克服以下错误。 该项目是一个键盘扩展,片段来自包含的应用程序。 let s = "htt
当使用 SharedApplication.openUrl 打开例如iOS 上的邮件程序,该应用程序在邮件程序打开的同时隐藏。 有什么办法可以让应用程序保持在后台吗?那么当用户存在邮件程序时,它会返回
我目前正在为 iPad 应用程序开发“设备内”(而非模拟器)监控系统。系统应该能够执行以下操作: -用户输入模拟:模拟用户输入:点击、拖动、键盘。 -信息记忆:输入后得到文本值和结果。 此信息稍后将报
嗯,我有这两个变量,一个 NSString 和一个 NSMutable 数组,我希望在所有选项卡中将其值设为全局值。到目前为止我只有一个(NSString)并且我可以正常获取它的值。不,我尝试再添加一
我有一个带有按钮的 subview ,点击它会打开 map 和位置。代码没有错误,但是一旦我被发送到 map 并返回我的应用程序……它会再次打开 map 。所以我猜这个方法被调用了两次。我该如何阻止它
下面的代码工作正常,但是当我回到我的应用程序时,它继续执行下面的代码,但我不知道为什么以及如何停止它。我认为这只发生在 ios5.0 中:应用流程 - rootviewcontroller -> ma
我在使用 3D Touch 动态快速操作快捷方式时遇到了一个非常简单的问题。 我希望在应用程序终止时清除快捷方式(通过双击主页按钮并向上滑动)。 我调用 UIApplication.sharedApp
我使用框架在我的主应用程序和 Today Extension 之间共享通用代码。我经常遇到以下情况:我试图访问从我的框架运行的 UIApplication.sharedApplication()(主应
我正在尝试从 UIViewController 获取对我的应用程序委托(delegate)的引用,但我不断收到此错误消息: 'sharedApplication()' is unavailable:
为什么没有在 MonoTouch 中实现 SharedApplication 的 TerminateWithSuccess 方法?我怎样才能调用它?或者更好的是,我如何以编程方式关闭应用程序? 最佳答
我正在使用 [[UIApplication sharedApplication] delegate] 在多个类之间共享变量。我在 AppDelegate 中设置了该值。我可以从 myAppDelega
我正在尝试测试(使用 XCTest 框架)驻留在框架(动态库)内的 View Controller 。我遇到了属性 UIApplication.sharedApplication().keyWindo
在处理 Objective-C 时, 我需要得到 protectedDataAvailable状态可能在一些后台线程中。 - (BOOL) isProtected { BOOL protect
我有一个测试项目可以在多个 View Controller 上使用私有(private)数据对象。(我是从网络和 git-hub 下载的) - (ExampleAppDataObject*) theA
我想知道在通过您的应用程序的 URL 启动后,是否仍然可以从 iOS 系统应用程序接收状态或回调,例如: 用户打开我的应用程序-->点击 FaceTime URL FaceTime 已打开并开始响铃-
我正在阅读有关为支持 3dTouch 的设备的主屏幕添加动态快捷方式的信息。它本质上归结为读/写 shortcutItems UIApplication.sharedApplication 的成员数组
我正在尝试访问一个创建导航 Controller 的变量,该导航 Controller 是我在 View Controller 中的 App Delegate 中定义的(我正在为每个选项卡构建一个带有
尝试访问我的 AppDelegate 实例但因 swift_dynamicCastClassUnconditional 而失败。 class AppDelegate: UIResponder, UIA
我正在尝试制作一个表格单元格,当点击它时会调用电话号码,我认为我必须使用的代码是; [[UIApplication sharedApplication] openURL:[NSURL URLWithS
我是一名优秀的程序员,十分优秀!