2015-01-30 1 views
1

Я использую этот код для отправки и изображений (и в конце концов подпись) в Instagram:EXC_BAD_ACCESS использования UIDocumentInteractionController для отправленного изображения в Instagram

@IBAction func sendToInstragramPressed(sender: AnyObject) { 

    var image = imagePreview.image 
    var imagePath = NSString(format: "%@", [NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)][0]) 

    var img: String = imagePath 
    var clean: String = img.stringByReplacingOccurrencesOfString(
    "[\\(\\ \\\"\\)]", 
    withString: "", 
    options: .RegularExpressionSearch) 
    clean = clean.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 
    clean = clean + "/image.igo" 
    imagePath = clean 

    println("test2 \(imagePath)") 

    NSFileManager.defaultManager().removeItemAtPath(imagePath, error: nil) 
    UIImagePNGRepresentation(image).writeToFile(imagePath, atomically: true) 

    var docController: UIDocumentInteractionController = UIDocumentInteractionController(URL: NSURL.fileURLWithPath(imagePath)!) 
    docController.delegate = self 

    /*var annotationDict: NSMutableDictionary = [:] 
    annotationDict["Instagram Caption"] = "Instagram Caption" 
    docController.annotation = annotationDict*/ 

    docController.UTI = "com.instagram.exclusivegram" 
    docController.presentOpenInMenuFromRect(self.view.frame, inView: self.view, animated: true) 
} 

Он показывает мне значок Instagram на ощупь. Когда я касаюсь его, я продолжаю получать ошибку EXC_BAD_ACCESS в AppDelegate, но я не могу на всю жизнь понять, что именно вызывает это. Я сделал точно такую ​​же реализацию в объективе-c, без проблем. Что может пойти не так?

EDIT

это происходило до того, как манипулировали ImagePath, а с этим блоком кода:

var img: String = imagePath 
var clean: String = img.stringByReplacingOccurrencesOfString(
    "[\\(\\ \\\"\\)]", 
    withString: "", 
    options: .RegularExpressionSearch) 
clean = clean.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()) 
clean = clean + "/image.igo" 
imagePath = clean 
+0

Что линия является ошибка? Что говорит вам отладчик? Он должен прыгать в lldb? –

+0

он отображается на 'классе AppDelegate: UIResponder, UIApplicationDelegate {' моего файла AppDelegate.swift – zillaofthegods

+0

'NSURL.fileURLWithPath (imagePath)!' Это то, что nil? Почему вы используете '!' Там? Это не кажется безопасным. –

ответ

0

Aha! Так выглядит, как будто я создавал метод UIDocumentInteractionController в методе, поэтому он был уничтожен ARC. Сделано это широкий переменной класса, и работал очарование

Так что не забудьте создать его экземпляр в классе, а затем сослаться на него в методе

т.е.

var docController: UIDocumentInteractionController!

+0

Вам не нужно добавлять '!' В объявление переменной, если у вас нет '?', По умолчанию считается не nil. –

+0

Когда я вынимаю '!', Я получаю сообщение об ошибке, говоря, что у класса «...» нет инициализаторов. Что происходит? – zillaofthegods

+0

Действительно, я могу ошибаться, мне придется больше почитать об этом, извините за плохой совет. –

Смежные вопросы