我使用以下行在我的Swift应用中打开外部网址:
UIApplication.sharedApplication().openURL(url)
这很好用,直到我通过CocoaPods将Realm添加到我的项目中。那时,它开始给我下面两个编译错误:
'sharedApplication()'不可用:使用基于视图控制器 适当的解决方案。
'openURL'不可用
这些错误表明API不适用于Application Extensions,但我的代码位于普通应用程序中,而不是扩展程序。为什么添加Realm会导致编译器认为它在App扩展中?
答案 0 :(得分:4)
您无法使用应用扩展程序中的sharedApplication
。
但请注意苹果文档说明:
重要
Apple允许任何Today小部件使用 openURL:completionHandler:打开小部件自己包含的方法 应用
答案 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 >设置为否。