我有一個iOS 8的Swift應用程序,它有一個應用程序組件,一個擴展組件和一個包含大量共享資源的框架 - 共享視圖控制器,共享資源等。在框架的一個點,我想打電話給用於框架+應用程序+擴展的統一openURL
UIApplication.sharedApplication().openURL(someURL)
但是,如果我這樣做,當「只允許應用程序擴展API」被選中,它錯誤,因爲UIApplication.sharedApplication()是擴展不可用。如果我取消選中該框,我會收到一個警告,說明在擴展中包含框架可能不安全,並且我擔心在提交時間時可能會導致拒絕。
如果這個代碼是在擴展只用,我會使用類似:
extensionContext.openURL(someURL, completionHandler: nil)
...但是,這並不在獨立應用程序的工作,只有在擴展。
修改我的代碼以確保UIApplication.sharedApplication()。openURL()行永遠不會被擴展調用,並且extensionContext.openURL()行從不會被應用程序調用,但這並不「清除錯誤 - 僅在擴展API框架中存在UIApplication.sharedApplication()會導致錯誤。
因此,在我開始研究黑客之前,有沒有一種乾淨的解決方案可以讓我調用openURL並採取正確的操作,而不會導致編譯錯誤?
在此先感謝!