2015-11-05 2 views
1

Как только мое расширение домена загружается, не каждый раз, и не все сразу видно пользователю. Наиболее распространенным является то, что вы можете видеть изображение, количество изображений и текст контента. Однако бывают случаи, когда есть много информации.Как получить элементы из контекста расширения в расширении Share для iOS?

  • Как получить к ним доступ?

Я знаю, что в SLComposeServiceViewController есть extensionContext и его свойство inputItems.

Итак, я остановился отладчик во время, и распечатывать на консоли некоторые вещи, с помощью следующей команды:

po (extensionContext!.inputItems[0] as! NSExtensionItem).userInfo![NSExtensionItemAttachmentsKey] 
  • Является ли это правильный способ сделать это?
  • Как правило, один элемент ввода?

был два NSItemProvider объектов как вложения к первому NSExtensionItem

enter image description here

Хорошо, тогда я распечатать первые вложения:

enter image description here

  • Как получить это изображение из этого NSItemProvider и URL из следующего? Можете ли вы доставить код?

Я полагаю, что мы будем использовать

loadItemForTypeIdentifier(_:options:completionHandler:) 

, но не знаю, как.

ответ

3
  1. import MobileCoreServices

  2. Существует простая функция, которую вы можете применить к коду:

    private func fetchAndSetContentFromContext() { 
    
        guard let extensionItems = extensionContext?.inputItems as? [NSExtensionItem] else { 
         return 
        } 
    
        for extensionItem in extensionItems { 
         if let itemProviders = extensionItem.attachments as? [NSItemProvider] { 
          for itemProvider in itemProviders { 
           if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeText as String) { 
    
            itemProvider.loadItemForTypeIdentifier(kUTTypeText as String, options: nil, completionHandler: { text, error in 
    
            }) 
           } 
          } 
         } 
        } 
    }