Как получить фактические данные / контент, предоставляемые NSItemProvider, а не тип - PullRequest
0 голосов
/ 29 мая 2019

Я новичок в iOS 11 Функция перетаскивания. Я знаю, как загрузить определенный тип объекта, когда он упал из вида, который может принять этот тип объекта. Однако перед вызовом loadObject(ofClass:completionHandler:) я хочу узнать значения, которые содержит выпавший предмет.

В моем методе делегата dropInteraction(_:performDrop:), когда я пытаюсь получить описание объекта itemProvider, я получаю только тип-

func dropInteraction(_ interaction: UIDropInteraction, performDrop session: UIDropSession) {

        if let itemProvider = session.items.last?.itemProvider{
            print("item provider \(itemProvider.description)")
        }
}

Когда я сбрасывал изображение из сафари, вышеприведенный код напечатал-

item provider <UIItemProvider: 0x600000c43640> {types = (
    "public.jpeg",
    "public.url"
)}

Здесь я не вижу значения URL. Если я хочу получить значение URL, я должен сделать-

func dropInteraction(_ interaction: UIDropInteraction, performDrop session: UIDropSession) {

    session.items.last?.itemProvider.loadObject(ofClass: URL.self, completionHandler: { itemProvider, err in
      if let urlItemProvider = itemProvider{
          print("url = \(urlItemProvider.absoluteString)")
      }
  })
}

Обычно, когда изображение отбрасывается, я хочу сохранить связанный с ним URL-адрес и подробную информацию об изображении в пользовательском классе, прежде чем пытаться загрузить его. Любая помощь будет оценена.

...