Swift. Как разрешить перетаскивание URL из браузера в NSView - PullRequest
0 голосов
/ 18 октября 2019

У меня есть NSView, который принимает пропущенные файлы и хранит их fileURL, но я бы хотел, чтобы он также принимал HTTP-URL, перетаскиваемые из интернет-браузера. Я имею в виду то же поведение, что и перетаскивание его в Finder для создания файла .webloc, но внутри моего приложения. Какой правильный PasteboardType использовать? Я пробовал:

Я нашел в чем проблема. Оказывается, у меня есть представление таблицы внутри этого NSView, и оно также зарегистрировано для перетаскиваемых типов .string (чтобы можно было изменить порядок ячеек). Кажется, таблица «проглатывает» тип URL, но пропускает имена файлов. Я должен решить эту проблему, но это другой вопрос.

1 Ответ

1 голос
/ 20 октября 2019

Данные на монтажном столе не являются списком свойств, а URL не является классом, совместимым со списком свойств. Используйте readObjects(forClasses:options:) вместо propertyList(forType:).

if let board = sender.draggingPasteboard().readObjects(forClasses: [NSURL.self]) {
    print("URL: \(board)")
    return true
}
...