我有一个iOS 8的Swift应用程序,它有一个应用程序组件,一个扩展组件和一个包含大量共享资源的框架 - 共享视图控制器,共享资源等。在框架的一个点,我想打电话给用于框架+应用程序+扩展的统一openURL
UIApplication.sharedApplication().openURL(someURL)
但是,如果我这样做,当“只允许应用程序扩展API”被选中,它错误,因为UIApplication.sharedApplication()是扩展不可用。如果我取消选中该框,我会收到一个警告,说明在扩展中包含框架可能不安全,并且我担心在提交时间时可能会导致拒绝。
如果这个代码是在扩展只用,我会使用类似:
extensionContext.openURL(someURL, completionHandler: nil)
...但是,这并不在独立应用程序的工作,只有在扩展。
修改我的代码以确保UIApplication.sharedApplication()。openURL()行永远不会被扩展调用,并且extensionContext.openURL()行从不会被应用程序调用,但这并不“清除错误 - 仅在扩展API框架中存在UIApplication.sharedApplication()会导致错误。
因此,在我开始研究黑客之前,有没有一种干净的解决方案可以让我调用openURL并采取正确的操作,而不会导致编译错误?
在此先感谢!