Swift崩溃在使用UIDocumentInteractionController时点击“在Instagram中打开”

时间:2015-09-23 11:51:53

标签: swift share instagram release retain

我在Swift应用程序中使用以下代码在Instagram上共享图像: @IBAction func instagramShareButton(sender:AnyObject){

p, page_id, post__in

func documentInteractionControllerWillPresentOpenInMenu(controller:UIDocumentInteractionController){        }

代码由Objective C翻译成Swift,因为我在Swift上找不到任何可以在Instagram上分享的内容。

菜单弹出,我在那里看到Instagram,当我点击它时,我收到以下错误:

  

断言失败 - [_ UIOpenWithAppActivity performActivity],   /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit/UIKit-3505.16/UIDocumentInteractionController.m:408

     

***因未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:   'UIDocumentInteractionController过早地消失了!'

我相信我不得不释放UIDocumentInteractionController对象。我对吗? 没有找到任何信息来帮助我理解我如何在Swift中做到这一点。请帮我弄清楚如何解决这个问题。

1 个答案:

答案 0 :(得分:43)

我认为你是对的。 我有同样的问题。

在开始共享函数之前,必须从UIDocumentInteractionController创建一个全局变量:

var interactionController: UIDocumentInteractionController?
@IBAction func instagramShareButton(sender: AnyObject) {
    ...
    interactionController = UIDocumentInteractionController(URL: fileURL)
    interactionController!.UTI = "com.instagram.exclusivegram"
    let msgBody = "My message"
    interactionController!.annotation = NSDictionary(object: msgBody, forKey: "InstagramCaption")
    interactionController!.presentOpenInMenuFromRect(rect, inView: self.view, animated: true)
}

这对我有用!