Swift – “共享应用程序不可用”。 代之以使用视图控制器的解决scheme

我打开一个外部URL在我的Swift应用程序使用行:

UIApplication.sharedApplication().openURL(url) 

这工作正常,直到我通过CocoaPods添加Realm到我的项目。 在这一点上,它开始给我下面的两个编译错误:

'sharedApplication()'不可用:取而代之,使用基于视图控制器的解决scheme。

“openURL”不可用

这些错误表明该API对于应用程序扩展是不可用的,但是我的代码位于正常的应用程序中,而不是扩展名。 为什么添加Realm导致编译器认为它在App Extension中?

您不能使用应用扩展程序中的sharedApplication

但请注意,苹果文档指出:

重要

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

ExtensionOverview。

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

 sudo gem install cocoapods 

这个问题是由于CocoaPods问题#3906 ,导致部分Realm的configuration设置被应用到你的应用程序的目标。 Realm启用的其中一个设置是“仅允许应用扩展程序API”,这就是为什么您最终会看到此特定错误的原因。