UIApplication.sharedApplication()不可用

时间:2015-09-16 13:18:57

标签: swift2 ios9 xcode7 openurl

我刚刚从XCode 6.4升级到Xcode 7 GM并开始更改代码以符合Swift 2.我无法解决以下错误。

该项目是一个键盘扩展程序,该代码段来自包含的应用程序。

    let s = "https://itunes.apple.com/"
    UIApplication.sharedApplication().openURL(NSURL(string : s)!)

错误1:' sharedApplication()'不可用:改为使用基于视图控制器的解决方案。

错误2:' openURL'不可用。

这可能与Xcode和AppDelegate有关,我可能搞砸了我的项目。

6 个答案:

答案 0 :(得分:19)

您无法从扩展程序访问每个API。来自Apple的Extension dev指南: 某些API不适用于App Extensions

由于其在系统中的重点作用,应用扩展程序没有资格参与某些活动。应用扩展程序不能:

访问sharedApplication对象,因此无法使用该对象上的任何方法

等等。

答案 1 :(得分:17)

我正在制作一个框架。我遇到了这个问题。手动将其设置为NO解决了我的问题。

enter image description here

答案 2 :(得分:10)

您的目标可能只有"允许应用扩展程序API"选项已选中。

检查目标的常规设置,以查看是否在部署信息中启用了该选项> App Extensions。

  

enter image description here

答案 3 :(得分:5)

Swift 3.0

在我的情况下,我在Widget(这是一个扩展名)中有这条消息,代码是我的应用程序的复制/粘贴。就像汤姆罗格罗说我必须更换

UIApplication.shared.open(NSURL(string:"https://

通过

self.extensionContext?.open(NSURL(string:"https://

答案 4 :(得分:2)

包含app的类以某种方式进入扩展Build Phases的编译资源列表。我删除了它们,现在没关系。

我没有这样做。显然,以某种方式升级到Xcode 7 GM进程。

答案 5 :(得分:1)

嗨,我解决了这个问题。

设置为允许API扩展为否,给予此e的特定框架 错误,如IQKeyboardManager

考虑到你面对IQKeyboardManager的这个问题,你使用Pod安装了这个框架。然后你的项目点击Pod - >点击IqkeyboardManager。

并将Allow API Extension设置为No

enter image description here