Swift crash wen tapping "Открыть в Instagram" при использовании UIDocumentInteractionController
У меня есть код ниже для обмена изображениями на instagram из моего приложения Swift:
@IBAction func instagramShareButton (отправитель: AnyObject) {
let documentsDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as NSString
let path = documentsDirectory.stringByAppendingPathComponent("Share Icon.igo")
let imageName: String = "Share Icon.png"
let image = UIImage(named: imageName)
let data = UIImagePNGRepresentation(image!)
data!.writeToFile(path, atomically: true)
let imagePath = documentsDirectory.stringByAppendingPathComponent("Share Icon.igo")
let rect = CGRectMake(0, 0, 0, 0)
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.opaque, 0.0)
self.view.layer.renderInContext(UIGraphicsGetCurrentContext()!)
UIGraphicsEndImageContext()
let fileURL = NSURL(fileURLWithPath: imagePath)
print("fileURL = \(fileURL)")
var interactionController = UIDocumentInteractionController(URL: fileURL)
interactionController.delegate = self
interactionController.UTI = "com.instagram.exclusivegram"
let msgBody = "My message"
interactionController.annotation = NSDictionary(object: msgBody, forKey: "InstagramCaption")
interactionController.presentOpenInMenuFromRect(rect, inView: self.view, animated: true)
}
func documentInteractionControllerWillPresentOpenInMenu (контроллер: 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
Я думаю, что ты прав.
У меня такая же проблема.
прежде чем запускать функцию общего доступа, вы должны создать глобальную переменную из 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)
}
Это работает для меня!