2015-05-06 3 views
0

Я в основном принимая скриншот зрения, сохранив его на мою Фотопленку, получая путь NSURL и экспорт в WhatsappUIDocumentInreactionController не позволит NSURL для .url (Swift)

//Create the UIImage 
    UIGraphicsBeginImageContext(view.frame.size) 
    view.layer.renderInContext(UIGraphicsGetCurrentContext()) 
    let image = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    //Save it to camera roll round 2 
    var library = ALAssetsLibrary() 

    library.writeImageToSavedPhotosAlbum(image.CGImage, metadata: nil, completionBlock: { 
     (path:NSURL!, error:NSError!) -> Void in 

     if NSThread.currentThread() == NSThread.mainThread(){ 
      println("\(path)") 
      var controller = UIDocumentInteractionController() 
      controller.delegate = self 
      controller.UTI = "net.whatsapp.image" 
      controller.URL = path 
      controller.presentOpenInMenuFromRect(CGRectZero, inView: self.view, animated: true) 

     } 
    }) 

Я м получают эту ошибку: неисправность

утверждения - [UIDocumentInteractionController setURL:], /SourceCache/UIKit/UIKit-3318.16.21/UIDocumentInteractionController.m:1024

Но, согласно документации Apple, она должна быть NSURL (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIDocumentInteractionController_class/#//apple_ref/occ/instp/UIDocumentInteractionController/URL)

Любые идеи?

+0

Но это не может быть 'nil'. Это? – matt

+0

Кстати, не пишите 'if NSThread.currentThread() == NSThread.mainThread()'. Используйте 'isMainThread'. Еще лучше, даже не задавайте этого вопроса; если ваша цель - попасть в основной поток, выйдите на основной поток (с 'dispatch_async'). – matt

+0

@matt благодарит за отзыв! Это была просто проверка, которую я сделал, чтобы проверить, запущен ли завершающий блок на mainThread. С этого момента я буду использовать isMainThread. – Tialtous

ответ

2

Как только изображение сохраняется в камере или где-то вне приложения, вы можете получить к нему доступ, используя URL-адрес с «схемой активов-библиотек».

Но свойство URL-адреса UIDocumentInteractionController поддерживает только URL-адрес с «файловой схемой».

Поэтому вам нужно сохранить свое изображение во временном каталоге приложения и установить его свойство «путь» к URL-адресу схемы файла.

+0

Большое спасибо, что должно это сделать! – Tialtous

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