Swift - 'sharedApplication不可用。'相反,使用基于视图控制器的解决方案

时间:2015-12-02 03:15:45

标签: ios swift swift2 realm

我使用以下行在我的Swift应用中打开外部网址:

UIApplication.sharedApplication().openURL(url)

这很好用,直到我通过CocoaPods将Realm添加到我的项目中。那时,它开始给我下面两个编译错误:

  

'sharedApplication()'不可用:使用基于视图控制器   适当的解决方案。

     

'openURL'不可用

这些错误表明API不适用于Application Extensions,但我的代码位于普通应用程序中,而不是扩展程序。为什么添加Realm会导致编译器认为它在App扩展中?

3 个答案:

答案 0 :(得分:4)

您无法使用应用扩展程序中的sharedApplication

但请注意苹果文档说明:

  

重要

     

Apple允许任何Today小部件使用   openURL:completionHandler:打开小部件自己包含的方法   应用

     

ExtensionOverview.

答案 1 :(得分:2)

将Realm添加到使用v0.39之前的CocoaPods版本的项目时,可能会出现此问题。要修复它,请使用以下命令更新到最新版本的CocoaPods:

sudo gem install cocoapods

此问题归因于CocoaPods issue #3906,这导致Realm的部分配置设置应用于您的应用程序的目标。 Realm启用的其中一个设置是“#34;仅允许应用扩展程序API"”,这就是您最终看到此特定错误的原因。

答案 2 :(得分:0)

即使使用CP v1.8.3,我仍然遇到相同的问题。

一种快速解决方案是选择有问题的窗格>构建设置> 仅需要应用扩展安全API >设置为否。