【问题标题】:Access App delegate from Objective C Project in Swift在 Swift 中从 Objective C 项目访问 App 委托
【发布时间】:2016-10-30 12:20:27
【问题描述】:

我们有一个 Objective C 项目,即将获得一些新功能。这些新功能将在 Swift 中实现。到目前为止,我们已经将 Swift 和 Objective C 一起使用,并且大多数事情都非常易于实现。

我目前未能完成的一件事是从 swift 中访问 (objc) 应用程序委托,尤其是它的方法和托管对象上下文。

我试过了

let appDelegate = UIApplication.sharedApplication().delegate! as UIApplicationDelegate

没有任何成功。

如何从我的 swift 代码访问用 Objective C 编写的应用程序委托并使用它的方法以及托管对象上下文?

【问题讨论】:

  • 您不应该在应用委托中真正拥有核心数据堆栈...

标签: ios objective-c swift


【解决方案1】:

使用你的 appdelegate 类名而不是 UIApplicationDelegate

let appDelegate = UIApplication.sharedApplication().delegate! as <<Your Appdelegate Class>>

并在 Bridging-Header 文件中导入该 appdelegate。 “Bridging-Header”用于两侧桥接

【讨论】:

  • 应用委托类(>)似乎是未知的,因为如果我这样做,它被称为未知类型
  • "Bridging-Header" 用于两侧桥接,所以在 Bridging-Header 文件中导入 appdelegate..
  • 在桥接头中导入 MyAppDelegate 完全破坏了我的 Obj-C 代码。大量编译器错误。
【解决方案2】:

你可以试试这个

let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

【讨论】:

    【解决方案3】:

    让 appDelegate:AppDelegate = UIApplication.sharedApplication().delegate as!应用委托

    【讨论】:

    • 在那种情况下,“AppDelegate”似乎是一个未知类型
    • 我用作! AppDelegate(它应该是你的 appdelegate 类名。)。
    猜你喜欢
    • 2019-12-27
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多