我正在Swift应用程序中打开一个外部URL,使用以下行:
UIApplication.sharedApplication().openURL(url)
在我通过CocoaPods将Realm添加到我的项目之前,这一直运行良好。在那一刻,它开始给我带来下面两个编译错误:
“sharedApplication()"不可用:在适当的情况下,请改用基于视图控制器的解决方案。
无法使用'openURL'
这些错误表明API对于应用程序扩展不可用,但是我的代码在一个普通的应用程序中,而不是一个扩展中。为什么添加Realm会导致编译器认为它在一个应用程序扩展中?
3条答案
按热度按时间tuwxkamq1#
您不能从应用程序扩展使用
sharedApplication
。但请注意,Apple文档指出:
重要提示
Apple允许任何“今日”Widget使用openURL:completionHandler:方法来打开小部件自身的包含应用程序。
ExtensionOverview.
jogvjijk2#
将Realm添加到使用V0.39之前的CocoaPods版本的项目时,可能会出现此问题。要解决此问题,请使用以下命令更新到最新版本的CocoaPods:
此问题是由于CocoaPods issue #3906造成的,它会导致Realm的部分配置设置应用于应用程序的目标。Realm启用的设置之一是“仅允许应用程序扩展API”,这就是您最终看到此特定错误的原因。
vlf7wbxs3#
即使使用CP v1.8.3,我仍然遇到同样的问题。
一个快速的解决方法是选择有问题的窗格〉构建设置〉仅要求应用扩展安全API〉设置为否。