2016-09-16 9 views
0

В этом есть много штук, но из того, что я могу сказать, все они необходимы, чтобы воспроизвести проблему.Подкласс NSURL с URL-адресом файла не работает в QuickLook для имен файлов, отличных от ASCII?

Я сделал тривиальный NSURL подкласс, например, так:

class URL2: NSURL { } 

Я сделал файл URL с ним:

let f = URL2(fileURLWithPath: "/Users/me/Downloads/ついて.pdf") 

Затем я попытался вернуть его из previewPanel(panel:previewItemAtIndex index:).

Результат: Я получаю общий значок файла в QLPreviewPanel (но он имеет правильное имя файла).

Любопытно, что если я делать какие-либо из них по-разному, это работает:

  • Если я использую обычный NSURL(fileURLWithPath: "/Users/me/Downloads/ついて.pdf"), он отображает содержимое файла правильно.
  • Если я использую только имя файла ASCII, оно отображает содержимое файла правильно.
  • Если я делаю что-то еще с URL2 (например, с помощью операции NSFileManager), он находит файл в порядке.

Что я могу делать неправильно, что заставляет QuickLook быть недовольным моим подклассом NSURL в этом случае?

ответ

1

Подклассификация NSURL (или NSURLRequest) часто является путём безумия, в немалой степени (я думаю), к интенсивному использованию NSXPC в различных частях ОС.

Вместо этого я бы предложил использовать категорию со связанными объектами. Это должно привести к тому, что вы нажмете край, если хотите, добавив собственные методы и свойства к объектам NSURL.

+0

Полезно знать. Но в Swift, прочитав руководство, вы не можете добавлять (не вычисляемые) свойства в расширение. –

+0

Oooh, связанные объекты. Я пропустил эту часть в первый раз. Это идея ... –